JSF2-回发后viewcoram bean上viewParam的行为

时间:2014-01-13 17:57:34

标签: java http jsf-2

我有一个viewcoped bean,它通过f:viewparam接收参数,并使用它们在模型中设置值。页面回发后,参数从url消失,但初始参数设置的模型值以某种方式保留。

这是一种保存参数的安全方法,还是应该在回发时重写url,以便保留初始参数后续调用?

参数如何保留?在视图状态?

1 个答案:

答案 0 :(得分:1)

以下是f:viewParam文档所说的内容:

  

[...]此标记使UIViewParameter作为当前视图的元数据附加。因为UIViewParameter扩展了UIInput所有属性,并且任何UIInput标记的嵌套子内容在此标记上也是有效的。

这意味着<f:viewParam> value属性将使用request参数进行更新,存储在viewstate中,并在您再次提交页面时重新设置/重新验证。

Arjan Tijms在这里有完整的故事:http://arjan-tijms.omnifaces.org/2011/07/stateless-vs-stateful-jsf-view.html

简而言之:使用@ViewScoped bean非常好,但如果你在该值上使用昂贵的验证器/转换器,请注意每次回发时将再次调用 页。如果您想避免这种情况,请查看BalusC的this article,其中解释了o:viewParam,OmniFaces的无国籍替代方案。