表单组件需要在其祖先中具有UIForm。建议:在<h:form> </h:form>中包含必要的组件

时间:2011-10-12 13:44:59

标签: jsf jsf-2 icefaces

我在我的Facelet页面上收到以下错误,该页面只包含一个带有两个字段和两个按钮的IceFaces表单:

  

表单组件需要在其祖先中具有UIForm。建议:在&lt; h:form&gt;

中包含必要的组件

以下是表格:

<ice:form id="form1" partialSubmit="false">
    <ice:panelLayout id="panelLayout3">
        <ice:graphicImage id="graphicImage1" url="/resources/images/LoginImage.jpg" width="560" />
        <ice:outputLabel for="j_username" id="outputLabel1" value="Username:"/>
        <ice:outputLabel for="j_password" id="outputLabel2" value="Password:"/>
        <ice:inputText binding="#{login.username}" id="j_username" required="true" />
        <ice:inputSecret binding="#{login.password}" id="j_password" required="true" />
        <ice:commandButton  actionListener="#{login.login}" id="loginBtn" value="Login"/>
        <ice:commandButton action="#{login.reset}" id="resetBtn" value="Reset"/>
        <ice:outputText id="errorMessage" />
        <ice:message errorClass="errorMessage" for="j_username" fatalClass="fatalMessage" id="messages1" infoClass="infoMessage" showSummary="false" warnClass="warnMessage"/>
    </ice:panelLayout>
</ice:form>

这是如何引起的?如何解决?

1 个答案:

答案 0 :(得分:14)

这不是错误。这是一个警告。代码看起来很好,所有输入组件都在一个表单中,它似乎应该运行并且工作正常。如果它确实工作正常,只需忽略警告。仅当上下文参数javax.faces.PROJECT_STAGE设置为Development时才会显示此警告。

关于虚假警告信息本身,根据issue 1663在Mojarra 2.1.1中引入了此检查。然而,根据issue 2147,它变成了一些错误,并在Mojarra 2.1.3中得到了进一步的改进。我想象在你的特定情况下,由于在表单和输入元素之间有<ice:panelLayout>而导致错误警告。

如果您尚未使用Mojarra 2.1.3,您可能需要考虑升级以查看是否删除了错误警告消息。