自动在URL中包含视图参数

时间:2011-08-31 12:50:03

标签: jsf jsf-2 post-redirect-get viewparams

我有简单的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

因为param1是在@PostConstruct中设置的。

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

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

当用户输入包含?param1=someValue的网页并点击链接时,系统会重定向到?param3=otherValue,但我想重定向到?param1=someValue&param3=otherValue。 我知道我可以在<h:link>中添加更多参数,但在每个<h:link>

中添加每个可能的参数都是困难的

PS。我在本主题JSF 2 and Post/Redirect/Get?

中使用了BalusC提示

1 个答案:

答案 0 :(得分:12)

关于第一个问题:您可以将includeViewParams=true添加到导航案例结果中。但是,当你在preRenderView方法中执行此操作时,你无法保证成功地重定向。可能已经太晚了。

关于第二个问题:您可以将includeViewParams的{​​{1}}属性设置为<h:link>

true

或者,您也可以在结果中添加<h:link value="clickme" includeViewParams="true"> <f:param name="param3" value="otherValue"/> </h:link>

includeViewParams=true