找到原因:"表单组件需要在其祖先中具有UIForm。"

时间:2016-07-14 15:29:41

标签: jsf primefaces

有没有办法确定导致

的行(甚至是什么文件)
  

表单组件需要在其祖先中具有UIForm。建议:在

中包含必要的组件
来自Primefaces的

警告信息?我刚刚开始研究一个已建立的项目,其中包含许多很多.xhtml文件(由其他人编写),包含各种模板和继承,而我在缩小导致问题的文件方面遇到了麻烦。

我试过谷歌搜索没有运气,我无法在SO上找到解决如何找到错误来源的答案。

更新:它不像转到网址中显示的页面那么简单。例如,当我导航到'../foo.xhtml'时会显示警告,但是,foo.xhtml会实现一个模板,并包含多个其他.xhtml个文件(每个文件又包含一些.xhtml {{1}}文件)。所有文件都有些大小(至少500行)。

1 个答案:

答案 0 :(得分:4)

if的{​​{1}}块中放置一个调试断点,isInNeedOfForm(component)已经返回true 96 if (isForm(component)) { 97 result = VisitResult.REJECT; 98 } else if (isInNeedOfForm(component)) { * 99 addFormOmittedMessage(finalContext); 100 } ,这是FormOmittedChecker#check(),从Mojarra 2.2.12开始。

<h:form>

给定一个页面的输入字段没有<h:inputText id="someInputText" />

component

断点命中在Eclipse中如下所示:

line 99

正如您在屏幕截图中看到的,您可以检查变量堆栈中的clientId变量,然后检查其id(或=0+Left(Right(A1;2);1) >3 )属性。最后,您可以在生成的HTML输出和/或JSF源代码中找到并关联它。

然而,我确实同意该消息应该包含更好的诊断。根据{{​​3}}修正了Mojarra 2.3.0-m04。