Jsf 查找原因:“;表单组件需要在其祖先中具有UIForm。”;
有没有办法确定是哪一行(甚至是哪一个文件)导致了错误 表单组件需要在其祖先中具有UIForm。建议:将必要的组件封装在 来自Primefaces的警告消息?我刚开始着手一个已建立的项目,其中有很多很多.xhtml文件(由其他人编写),带有各种模板和继承,我很难缩小导致问题的文件范围 我曾尝试过谷歌搜索,但运气不佳,我无法在上面找到答案,从而解决了如何找到错误源的问题 更新:它不像转到url中显示的页面那么简单。例如,当我导航到Jsf 查找原因:“;表单组件需要在其祖先中具有UIForm。”;,jsf,primefaces,Jsf,Primefaces,有没有办法确定是哪一行(甚至是哪一个文件)导致了错误 表单组件需要在其祖先中具有UIForm。建议:将必要的组件封装在 来自Primefaces的警告消息?我刚开始着手一个已建立的项目,其中有很多很多.xhtml文件(由其他人编写),带有各种模板和继承,我很难缩小导致问题的文件范围 我曾尝试过谷歌搜索,但运气不佳,我无法在上面找到答案,从而解决了如何找到错误源的问题 更新:它不像转到url中显示的页面那么简单。例如,当我导航到'../foo.xhtml'时会显示警告,但是,foo.xhtml实现
'../foo.xhtml'
时会显示警告,但是,foo.xhtml
实现了一个模板,并包含多个其他.xhtml
文件(每个文件又包含几个.xhtml
文件)。所有文件都有一定的大小(至少500行)。如果isInNeedOfForm(component)
返回了true
,则在块内放置一个调试断点,从Mojarra 2.2.12开始
96 if (isForm(component)) {
97 result = VisitResult.REJECT;
98 } else if (isInNeedOfForm(component)) {
* 99 addFormOmittedMessage(finalContext);
100 }
给定一个带有输入字段且不带
的页面
<h:inputText id="someInputText" />
在Eclipse中,断点命中将如下所示:
如屏幕截图所示,您可以检查变量堆栈中的组件
变量,然后检查其clientId
(或id
)属性。最后,您可以在生成的HTML输出和/或JSF源代码中定位并关联它
不过,我同意该信息应包含更好的诊断信息。这已根据在Mojarra 2.3.0-m04中修复。哪个页面应该清晰,对吗?因为你在一个页面中得到了这一点(或者这是服务器日志记录吗?),所以你尝试提高日志级别了吗?@Kukeltje,实际上没有。我会更新这个问题。而且,它不会在任何地方注销,它只是一条primefaces咆哮消息,在页面加载时显示。所以你知道它是什么页面。然后开始缩小页面。就这么简单。删除模板等。。这就是找到原因的方法。不应超过5分钟。@Kukeltje-当有多个模板和include语句时不应如此。而且几乎不可能开始注释页面,因为引用其他包含的文件会导致异常。感谢您的回复!我会尽快试一试的。效果很好!我希望我能做的不仅仅是投票和接受。非常感谢你!不客气。你可以考虑开始赏金,让它运行整整一周。