我有简单的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¶m3=otherValue
。
我知道我可以在<h:link>
中添加更多参数,但在每个<h:link>
PS。我在本主题JSF 2 and Post/Redirect/Get?
中使用了BalusC提示答案 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