viewParam和请求范围的bean

时间:2012-03-25 03:21:33

标签: jsf-2

我尝试将视图参数与请求范围的bean结合使用。我注意到模型确实已更新,并且在呈现页面时,bean属性已设置并使用<h:outputText value="myBean.myParameter />呈现。我的问题是关于回帖。我的印象是,只要您不发布到不同的视图,就会保留视图参数值。我期望在动作方法调用期间自动在bean中设置属性,但实际上我发现情况并非如此。有人可以解释为什么会这样。我四处搜索,发现很多文章讨论了viewParams,但是我找不到每个范围内究竟是什么效果(以及为什么)的解释。如果有人知道有文章证明这一点,你可以指点我。提前谢谢......

1 个答案:

答案 0 :(得分:2)

  

我的印象是,只要您不发布到其他视图,视图参数值就会被保留。

仅当您使用 view 作用域的bean时才会这样,因为它们会在bean中被记住。只要您与同一视图交互,视图范围内的bean就会存在。鉴于您的印象,我认为您将请求范围与视图范围混淆。

请求范围bean在HTTP请求/响应周期结束时被删除。因此,当webbrowser完成加载页面时,请求范围的支持bean已经被删除了很长时间。当您在该页面上提交表单时,将创建一个新的请求范围bean,<f:viewParam>将检查待设置的请求参数是否可用,如果没有,则只需跳过它(或验证;如果你有required="true"设置它们。只要您不通过在该页面上的表单的命令链接/按钮内使用<f:param>来保留视图参数,那么这些参数将在后续请求中丢失,因此也会在任何涉及的请求范围内的bean中丢失。

另见: