2016-07-14 48 views
4

有什么办法来确定哪些订单(甚至什么文件)导致找到原因:“表单组件需要在其祖先中有一个UIForm。”

表单组件需要在其祖先一个UIForm。建议:附上必要的组件

来自Primefaces的警告消息?我刚刚开始研究一个已建立的项目,其中包含许多许多.xhtml文件(由其他人编写)以及各种模板和继承,并且我无法缩小导致该问题的文件的范围。

我试过Google搜索没有运气,我找不到答案,所以地址如何找到错误的来源。

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

+1

什么页面应该清楚,对吧?既然你在一个页面中获得这个(或者是这个服务器日志?)试图增加日志级别? – Kukeltje

+0

@Kukeltje不,实际上。我会更新这个问题。 – lucasvw

+0

此外,它不会在任何地方注销,它只是在页面加载时显示的primefaces growl消息。 – lucasvw

回答

4

将调试断点FormOmittedChecker#check(),将if块,其中isInNeedOfForm(component)返回true,其是作为line 99 2.2.12钻嘴鱼科的内部。

96     if (isForm(component)) { 
    97      result = VisitResult.REJECT; 
    98     } else if (isInNeedOfForm(component)) { 
* 99      addFormOmittedMessage(finalContext); 
    100     } 

考虑到与输入栏的网页没有<h:form>

<h:inputText id="someInputText" /> 

断点命中看起来像下面在Eclipse:

正如你在截图中看到,你可以检查变量堆栈中的变量component,然后检查它的clientId(或id)财产。最后,您可以在生成的HTML输出和/或JSF源代码中找到并关联它。

但是,我确实同意邮件应包含更好的诊断。这根据issue 4026在Mojarra 2.3.0-m04中修复。

+0

感谢您的回应!我会尽快尝试。 – lucasvw

+0

工作就像一个魅力!我希望我能做得更多,而不是接受。非常感谢! – lucasvw

+0

不客气。你可以考虑开始赏金,让它运行整整一周。 – BalusC

相关问题