我正在编写一个复合组件,例如复杂的输入文本,它需要一个完整的表单(它将显示一个搜索表单和一个结果列表,供用户选择其中一个)。
<composite:implementation>
<div id="#{cc.clientId}" class="#{cc.attrs.styleClass}">
<h:inputText id="txtIdentificador" ...>
<h:graphicImage id="imgIdentificador" ...>
<h:inputText id="txtDescripcion" ...>
<h:form id="formF2ItemWidget">
...
</h:form>
</div>
</composite:implementation>
从逻辑上讲,我想使用其他形式,但是这样做时遇到了问题。例如
<h:form id="formOuter" >
<h:outputLabel value="Texto1" />
<trkal:itemwidget id="txtTexto1">
...
</h:form>
生成的 HTML 没有内部表单(formF2ItemWidget),它只有 id=formOuter 的表单。但在下面的例子中:
<h:form id="formOuter" >
<h:outputLabel value="Texto1" />
<trkal:itemwidget id="txtTexto1">
<h:outputLabel value="Texto2" />
<trkal:itemwidget id="txtTexto2">
...
</h:form>
txtTexto1 的表单不存在,但 txtTexto2 的表单存在。为什么?
如何编写包含表单的复合组件而不会出现此问题?
我正在使用 mojarra 2.1.7、Java 6.0 和 Tomcat 7.0