在URL中自动包含视图参数



我有一个简单的jsf页面,视图参数和加载方法正在处理这些参数:

<f:metadata>
 <f:viewParam name="param1" value="#{bean.param1}"/>
 <f:viewParam name="param2" value="#{bean.param2}"/>
 <f:viewParam name="param3" value="#{bean.param3}"/>
 <f:event type="preRenderView" listener="#{bean.load()}"/>
</f:metadata>

我还在@PostConstruct中设置了一些初始值。如何将用户重定向到包含这些参数(非空)的新位置。例如用户在浏览器中输入:

domain.com/page.jsf

,重定向到:

domain.com/page.jsf?param1=valueA

因为在@PostConstruct中设置了param1。

另一个问题-我在页面上有链接引用相同的视图:

<h:link value="clickme">
 <f:param name="param3" value="otherValue"/>
</h:link>

当用户进入?param1=someValue页面并点击链接时,被重定向到?param3=otherValue,但我想重定向到?param1=someValue&param3=otherValue。我知道我可以在<h:link>中添加更多的参数但是很难在每个<h:link>中添加所有可能的参数

p。我使用了本主题中的BalusC技巧JSF 2和Post/Redirect/Get?

关于第一个问题:您可以将includeViewParams=true添加到导航用例结果中。但是,当您在preRenderView方法中这样做时,您永远无法保证您将成功地重定向。到那时可能已经太晚了。

关于第二个问题:可以将<h:link>includeViewParams属性设置为true

<h:link value="clickme" includeViewParams="true">
    <f:param name="param3" value="otherValue"/>
</h:link>

或者,您也可以将includeViewParams=true添加到结果中。

<h:link value="clickme" outcome="otherPage?includeViewParams=true">
    <f:param name="param3" value="otherValue"/>
</h:link>

相关内容

  • 没有找到相关文章

最新更新