Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp 如何在JSF中呈现组件时设置ManagedBean的属性不丢失值(最好不要使用SessionBean或使用静态变量)_Jsp_Jsf 2 - Fatal编程技术网

Jsp 如何在JSF中呈现组件时设置ManagedBean的属性不丢失值(最好不要使用SessionBean或使用静态变量)

Jsp 如何在JSF中呈现组件时设置ManagedBean的属性不丢失值(最好不要使用SessionBean或使用静态变量),jsp,jsf-2,Jsp,Jsf 2,众所周知,当我们呈现JSFWeb应用程序的组件时,我们将丢失属性值。我们有两种解决方案: 在face-config.xml中设置ManagedBean类型会话 设置托管Bean静态类型的属性。E.x: 公共静态字符串txtName Ex. 我想找到一种不使用第二种方法的方法(如此之多,他们只能通过web浏览器访问单个静态变量),并且不使用第1种方法那样的SessionBean 有解决这个问题的方法吗?只需使用视图范围。它正是为了这个目的而设计的。记住在同一视图上跨ajax请求负责视图状态的值 @

众所周知,当我们呈现JSFWeb应用程序的组件时,我们将丢失属性值。我们有两种解决方案:

  • 在face-config.xml中设置ManagedBean类型会话
  • 设置托管Bean静态类型的属性。E.x:

    公共静态字符串txtName Ex.

  • 我想找到一种不使用第二种方法的方法(如此之多,他们只能通过web浏览器访问单个静态变量),并且不使用第1种方法那样的SessionBean


    有解决这个问题的方法吗?

    只需使用视图范围。它正是为了这个目的而设计的。记住在同一视图上跨ajax请求负责视图状态的值

    @ManagedBean
    @ViewScoped
    public class Bean {
    
        // ...
    
    }
    
    另见:

    非常感谢您的建议。我是否可以在face-config.xml中定义ViewScope,如下所示:userBean com.demo.bean.userBean view Yes。你怎么会失败呢?或者你根本没试过?将来,请在问之前先试试:)我试了20多次,但还是失败了。属性值已保存,但很遗憾,弹出窗口未显示。我将在几分钟后显示我的演示错误,很显然,您每次都(隐式地)重新创建视图。一些SSCCE风格的代码肯定有助于找出问题的原因:)当我想在托管Bean中使用viewScope呈现弹出窗口时,下面是我的web错误