我在我的Facelet页面上收到以下错误,该页面只包含一个带有两个字段和两个按钮的IceFaces表单:
表单组件需要在其祖先中具有UIForm。建议:在< h:form>
中包含必要的组件
以下是表格:
<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>
这是如何引起的?如何解决?
答案 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,您可能需要考虑升级以查看是否删除了错误警告消息。