【问题标题】:custom navigation handler - handleNavigation not invoked by h:link自定义导航处理程序 - 未由 h:link 调用 handleNavigation
【发布时间】:2012-10-21 20:52:45
【问题描述】:

我的自定义导航处理程序中的句柄导航方法handleNavigation(final FacesContext context, final String fromAction, final String outcome) 没有被我的 h:link 组件调用?

<h:link value="text" outcome="./target.xhtml?faces-redirect=true">
    <f:param name="param" value="#{var.prop}"/>
</h:link>

使用命令按钮调用它。

【问题讨论】:

    标签: jsf navigation


    【解决方案1】:

    &lt;h:link&gt; 不会在目标 URL 被解析后发送 POST 请求。相反,&lt;h:link&gt; 生成一个 HTML &lt;a&gt; 元素,其中目标 URL 已经在 href 属性中,该属性又用于发送 GET 请求。此 URL 由ViewHandler#getBookmarkableURL() 获得,后者又委托给ViewHandler#getActionURL()

    如果您使用 Mojarra,您可以在 OutcomeTargetLinkRenderer#renderAsActive() 中查看所有作业。

    您可以通过扩展ViewHandlerWrapper 并将其注册为&lt;application&gt;&lt;view-handler&gt;,轻松提供自定义ViewHandler

    【讨论】:

    • 嗯,感谢您的解释,但这对于我想存储导航历史记录并使用 url 中的查询重定向到目标站点的情况似乎没用。我现在真的没有看到任何解决方案。你有什么想法吗?
    • 要么在点击时向某个自定义 servlet 发送(非 JSF!)ajax 请求,要么创建一个自定义 servlet 过滤器(或者可能是 ViewHandler#createView() 上的一个挂钩),当 GET 请求被调用时被解雇了。
    • 我认为我采取了完全不同的方法,因为越来越多的问题出现了,这些问题都需要变通的解决方法。 stackoverflow.com/questions/12045442/…
    猜你喜欢
    • 2013-03-14
    • 1970-01-01
    • 2021-10-22
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2017-10-19
    • 2020-06-25
    相关资源
    最近更新 更多