警告 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" />
此外,<h:link>
将呈现 <span>
元素而不是 <a>
元素。
解决方案很明显:使用有效的视图 ID,或至少确保所需的视图可由 ConfigurableNavigationHandler#getNavigationCase()
解析。
请注意,有些初学者出于未知原因甚至使用像 http://google.com
这样的完整 URL 作为 <h:link>
的结果值:
<h:link value="Go to Google" outcome="http://google.com" />
这种滥用也会产生这个警告。您应该改用<h:outputLink>
或只使用<a>
。
至于没有与 JSF 组件具有相同 ID 的 HTML 元素,当您没有明确指定 JSF 组件的 id
属性时,可能会发生这种情况。 JSF 组件 ID 不一定会出现在生成的 HTML 输出中。为这些组件分配一个固定的 ID 应该有助于更好地确定原因。
【讨论】:
Excelent es allways ...我的代码中有一个 h:link 已过时。 是的,我的<h:link>
“结果”属性指向了一个文件系统中不存在的文件。一旦我把文件放在那里,我的链接就起作用了,错误就消失了谢谢@BalusC
JSF 应该提供单个链接组件,支持所有属性,如 href, outcome, action, value
并根据提供的内容进行渲染。这将比当前的技术方法更面向用户/开发人员。以上是关于警告 JSF1090:组件 j_idt51 的导航案例未解决的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JSF 2.0 中从 javascript 中获取元素