我在JSF 2页面中观察到以下行为(Mojarra 2.1.18 / RedHat EAP 6.1,如果这很有用)。我有一个包装数据表的表单,我正在为表单和表提供ID属性值。当我查看生成的html源文件时,我看到表ID被设置为自动生成的值,并且表单ID属性不会添加到自动生成的表ID之前。那就是:
这组标签:
<h:form id="form4">
<h:datatable id="notices" ...>
...
</h:datatable>
</h:form>
产生以下html:
<form id="form4" ...>
<table id="j_itd68"> //i.e. id != "notices"
...
</table>
</form>
在h:form / h:datatable之前的JSF xhtml文件中有更多元素,但我有意在这里将它们排除在外(希望有人可能在没有额外混乱的情况下识别这种症状)。当我尝试在表中包含一些PrimeFaces p:commandbutton实例时,对我来说出了问题。它们没有被正确命名(即它们在生成的ID中不包括封闭的表单ID),这会导致“找不到ID的组件”servlet错误。如果我用h:commandbutton实例替换p:commandbutton实例,则会出现相同的不正确命名(所以我不认为这是PrimeFaces问题)。这种行为似乎是格式错误的JSF页面的结果,但我还没有找到任何东西(对JSF xhtml文件的NetBeans XML检查会返回一个成功的结果)。任何帮助表示赞赏。
致以最诚挚的问候,
-Andy