这是我的表格:
<form action="j_security_check">
<h:panelGrid columns="2" bgcolor="#eff5fa" cellspacing="5" frame="box" styleClass="center">
<h:outputLabel value="User ID:"/>
<h:inputText id="j_username" tabindex="1" />
<h:outputLabel value="Password:"/>
<h:inputSecret id="j_password"/>
<h:outputLabel value=""/>
<h:commandButton id="login" value="Login"/>
</h:panelGrid>
</form>
在Glassfish 3.0.1上可以正常工作,但是从Glassfish 3.1 b2开始,它将在JSF页面中以
FacesMessage
的形式显示此警告:如果我将
<form action="j_security_check">
更改为<h:form>
,但不能解决问题,则必须将<h:form>
放入<h:panelGrid>
内。 最佳答案
这只是警告而不是错误。通常会有警告来通知开发人员不可预见的情况/条件,这些情况/条件可能不会立即导致技术错误/问题。任何事情都可能完美无瑕地工作,但是行为/结果可能并非开发人员想要的那样。例如,新手开发人员可能不小心使用了<form>
而不是<h:form>
。这样的警告将很有帮助。
在您的特定情况下,由于需要提交到非JSF服务,因此您仅被迫使用<form>
。作为经验丰富的开发人员,您知道它是合法的。您可以忽略此警告。无论如何,仅当javax.faces.PROJECT_STAGE
设置为Development
时才会出现此警告,而当其设置为Production
时则不会出现。
但是,当窗体及其输入子级之间还有另一个组件(例如panelgrid)时,它仍然显示警告,这对我来说是一个错误。我会报告给Mojarra的家伙。看起来好像只在检查直系 parent ,而不是在检查所有 parent 。 更新:已根据Mojarra 2.1.3 / 2.2进行了修复,另请参见issue 2147。
顺便说一下,这不是Glassfish特有的。当然,较新的GF版本附带了已实现这些警告的较新的Mojarra版本。另请参见issue 1663。
相关问题: