【发布时间】:2014-09-03 15:18:42
【问题描述】:
嗯。 我为 CRUD 创建了一个自定义组件,表单页面是一个参数。 在这种情况下,我需要两个页面,一个用于定义组件,另一个用于表单。
有什么办法吗?
如下:
实施:
组件
<cc:interface>
<cc:attribute name="formPage" type="java.lang.String" required="true"/>
.....
</cc:interface>
<cc:implementation>
...
<h:form id="form-crud">
<ui:include src="#{cc.attrs.formPage}" />
</h:form>
...
</cc:implementation>
第 1 页:crud.xhtml
<ui:define name="content-template" >
<comp:crud
paginaForm="crud-form.xhtml" />
</ui:define>
第 2 页:crud-form.xhtml
<html ...
<p:panelGrid id="grid-crud" columns="2" >
<h:outputLabel for="dsName" value="Name: " />
<p:inputText id="dsName" value="#{crudBean.dsName}"/>
</p:panelGrid>
</html>
新实施(示例)
为了简化,我想在同一页面中包含组件定义和表单,类似这样。可能吗? 我知道我可以使用模板,但自定义组件有更多属性。
新组件
<cc:implementation>
...
<h:form id="form-crud">
<XX:SOMETING name="#{cc.attrs.formContent}" />
</h:form>
...
</cc:implementation>
新页面 1:new-crud.xhtml
...
<ui:define name="content-template" >
<comp:crud
form="new-form" />
<XX:SOMETING id="new-form">
<p:panelGrid id="grid-crud" columns="2" >
<h:outputLabel for="dsName" value="Name: " />
<p:inputText id="dsName" value="#{crudBean.dsName}"/>
</p:panelGrid>
</XX:SOMETING>
</ui:define>
...
【问题讨论】:
-
这是我第二次修复您问题中的术语错误。这些不是自定义组件。这些是复合组件。要了解差异,请参阅stackoverflow.com/questions/6822000/…
-
好的@BalusC,收到小费!我会注意的!
标签: jsf jsf-2 facelets markup composite-component