jsf - 包含表单的复合组件的问题

标签 jsf jsf-2 mojarra

我正在编写一个复合组件,如复杂的输入文本,它需要一个完整的表单(它将显示一个搜索表单和一个结果列表,供用户选择其中一个)。

<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

最佳答案

嵌套 <form>元素是illegal在 HTML 中。由于 JSF 只是一个 HTML 代码生成器,因此您不能在这里对 JSF 施展任何魔法。

只是不要嵌套<h:form> JSF 中的组件也是如此。删除 <h:form>从组合中寻找替代方法来处理“子表单”。

关于jsf - 包含表单的复合组件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12952404/

相关文章:

jsf - 用户界面 :repeat add new item not working in first element

jsf - 为什么 mojarra 2.1 在每个模块启动时扫描所有其他 war ?

jsf - 在 JSF 命名 bean 中注入(inject) Java 对象

JSF ViewScoped beans 在每次请求时调用 3 次

java - JSF 2 验证选项

html - t :selectOneRadio is not working in tomahawk version 2. 0

java - Servlet Faces Servlet 的错误 StandardWrapperValve[Faces Servlet] :PWC1406: Servlet. service() 引发异常

ajax - javax.servlet.ServletException 请求不包含多部分/表单数据或多部分/混合流

JavaScript 函数在启动时加载并将参数传递给托管 Bean

java - 面组件未显示