【问题标题】:Changing Browser URL from backing bean in JSF 2从 JSF 2 中的支持 bean 更改浏览器 URL
【发布时间】:2011-10-21 02:41:56
【问题描述】:

这与Changing Browser URL from backing bean有关

@balusc

我如何在 JSF 2 中做同样的事情?我有一个包含 6 个不同组件(主要是 PrimeFaces 3.0)的搜索页面,用于设置搜索参数。如何让所有参数出现在 URL 中,以便用户可以使用 URL 共享结果页面?

我查看了 PrettyFaces,它似乎能够以更好的方式做到这一点,但如果这是一个更简单的解决方案,我宁愿让它与 JSF2 一起工作......

谢谢!

【问题讨论】:

    标签: jsf-2


    【解决方案1】:

    您应该通过嵌套的 f:param 标签手动指定所有参数,如下所示:

    <h:link outcome="nextPage">
        <f:param name="param1" value="val1" />
        <f:param name="param2" value="val2" />
    </h:link>
    

    或者只指定 includeViewParams 参数:

    <h:link outcome="nextPage" includeViewParams="true">
    

    h:button 也是如此

    【讨论】:

    • 谢谢!我正在使用不支持此属性 includeViewParams 的 p:commandButton。它还使用支持 bean 来更新 primefaces 数据表。代码是 p:commandButton update="data:table1" 请指教!
    • includeViewParams 只有在打开新页面时才有效吗?在我的情况下,同一页面会使用新数据进行更新...实际上,当您单击 p:commandButton 时,会使用新值更新 p:dataTable。
    • @agileai 'p:commandButton' 向服务器发送 POST 请求。为了在 URL 中包含参数,您必须发出使用 h:button 和 'h:link' 实现的 GET 请求(不记得它是否支持用于发出 GET 请求的简单按钮)。但是,在您的情况下,您会生成完全不同的 Ajax 请求。而且我担心在您的情况下您将无法更新浏览器 URL,因为 Ajax 只是对您的视图进行部分处理。虽然我不知道你为什么需要它。
    • @jfrentic 我对 Ajax 也有同样的想法……我有一个由几页组成的简单应用程序。这个特定的页面展示了用户可能希望与他人分享的不同结果......还有其他方法可以创建可共享的链接吗?也许通过创建一个共享按钮来创建一个自定义 URL,该 URL 由一个特殊页面处理,该页面重定向到显示所需数据的结果页面?我只是在大声思考。除此之外,我想我将不得不重新考虑页面设计,如果可能的话我想避免。再次感谢您对此的帮助!
    • @agileai 以我的专业水平,我会告诉你,在单独的页面上显示结果会容易得多(也就是说,如果你想拥有可收藏的 URL)。但是,我认为通过在 URL 中使用哈希(例如hostname/myapp/mypage#param1=val)可能是可能的。只需谷歌搜索“可书签的 Ajax 链接”或其他内容。如果我找到答案,我一定会在这里发布。很高兴我是任何帮助。
    猜你喜欢
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 2011-12-19
    • 2012-09-06
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    相关资源
    最近更新 更多