JSF 2 ViewScope问题

ber*_*tie 12 jsf jsf-2

引用这篇好文章,

新的视图范围应该正好解决这些问题.只要您一次又一次地将表单提交到同一视图,@ ViewScoped bean就会存在.换句话说,只要action方法返回null或甚至void,bean就会在下一个请求中出现.导航到不同的视图后,bean将被删除.

我想到了这些问题:

  1. 如果我当前的视图是index.xhtml,如果我明确指定,return "index";或者<h:commandButton action="index.xhtml" ..>基本上返回到同一视图,bean将再次重新创建..为什么?
  2. 视图操作的bean可以在重定向中存活吗?
  3. 如果可以,我该如何指定呢?我不能想象做这样的事情return "?faces-redirect=true"或者<h:commandButton action="?faces-redirect=true" ..>,是的,我想跳过定义导航faces-config.xml使用<redirect/>.

Bal*_*usC 12

如果我当前的视图是index.xhtml,并且如果我明确指定返回"index"; 或者,基本上返回到相同的视图,bean将再次重新创建..为什么?

如果明确指定结果(读取:视图),则将创建新视图.您必须从操作方法返回null或void(或者只是省略action命令组件的属性).

我必须承认,我理解你的困惑,并且"视图"一词可以根据具体情况进行不同的解释.我想我迟早会修改链接文章中的措辞.

Viewscoped bean可以在重定向中存活吗?

不可以.只有会话范围的bean可以和flash范围内的对象(一旦重定向完成就会立即结束,这可能是你在提出这个问题时想到的功能要求的实际需要).