警告 JSF1090:组件 j_idt51 的导航案例未解决

Posted

技术标签:

【中文标题】警告 JSF1090:组件 j_idt51 的导航案例未解决【英文标题】:WARNING JSF1090: Navigation case not resolved for component j_idt51 【发布时间】:2013-12-29 11:07:45 【问题描述】:

我的应用程序中收到此警告

JSF1090:组件 j_idt51 的导航案例未解决

此警告的原因是什么?我该如何解决?奇怪的是组件id j_idt51 不在渲染页面中。如果我查看生成页面的 html,则没有 ID 为 j_idt51 的元素。

【问题讨论】:

警告更加烦人,因为我们的生产 Glassfish 日志没有显示 xhtml 站点,错误发生的标记并且我在开发中找不到它。 【参考方案1】:

只要您在<h:link><h:button>outcome 属性中使用(隐式)导航结果,就会出现此警告,这表示有效的视图ID。

例如

<h:link ... outcome="viewIdWhichDoesNotExist" />
<h:button ... outcome="viewIdWhichDoesNotExist" />

此外,&lt;h:link&gt; 将呈现 &lt;span&gt; 元素而不是 &lt;a&gt; 元素。

解决方案很明显:使用有效的视图 ID,或至少确保所需的视图可由 ConfigurableNavigationHandler#getNavigationCase() 解析。

请注意,有些初学者出于未知原因甚至使用像 http://google.com 这样的完整 URL 作为 &lt;h:link&gt; 的结果值:

<h:link value="Go to Google" outcome="http://google.com" />

这种滥用也会产生这个警告。您应该改用&lt;h:outputLink&gt; 或只使用&lt;a&gt;

至于没有与 JSF 组件具有相同 ID 的 HTML 元素,当您没有明确指定 JSF 组件的 id 属性时,可能会发生这种情况。 JSF 组件 ID 不一定会出现在生成的 HTML 输出中。为这些组件分配一个固定的 ID 应该有助于更好地确定原因。

【讨论】:

Excelent es allways ...我的代码中有一个 h:link 已过时。 是的,我的&lt;h:link&gt;“结果”属性指向了一个文件系统中不存在的文件。一旦我把文件放在那里,我的链接就起作用了,错误就消失了谢谢@BalusC JSF 应该提供单个链接组件,支持所有属性,如 href, outcome, action, value 并根据提供的内容进行渲染。这将比当前的技术方法更面向用户/开发人员。

以上是关于警告 JSF1090:组件 j_idt51 的导航案例未解决的主要内容,如果未能解决你的问题,请参考以下文章

是否有用于实现面包屑导航的 JSF 组件?

JSF 2.0:跨多个视图保留组件状态

如何在 JSF 2.0 中从 javascript 中获取元素

JSF 中的最佳实践:模型、动作、getter、导航、阶段监听器

用于链接/导航到其他 JSF 页面的 URL

jsf 2.0 上的 JSF1064“无法找到或提供资源”警告