【问题标题】:JSF ManagedBean size limitJSF ManagedBean 大小限制
【发布时间】:2017-08-24 13:26:13
【问题描述】:

我有一个这样的托管 bean:

@ManagedBean
@ViewScoped
public class bean implements Serializable {
    private List<Project> projectList = new ArrayList<Project>();
    @PostConstruct
    private void init() {
       projectList = projectManager.getActiveProjects();
    }
    public void save() {
        //save
    }
}

问题是当我从 xhtml 页面调用 save 方法时。 我希望简单地进入保存方法并完成任务。可惜它只进入init方法,从不进入save。

看来问题出在 projectList 列表中。如果我不将项目保存在列表中,那么一切正常。

我在 web.xml 中也有这个配置

<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>

如果我将值设置为 server 它将起作用,但我不知道我是否可以做到。 所以我的问题是:jsf managedbean 有最大尺寸吗?如果是,那么如果我需要存储“更大”的数组列表该怎么办?将 STATE_SAVING_METHOD 设置为 server 是一个好的解决方案吗?

【问题讨论】:

标签: java jsf


【解决方案1】:

STATE_SAVING_METHOD 用于指定组件状态保存在哪里。 当您使用“服务器”时,JSF 容器会在服务器内存中维护组件状态,并且不会向客户端询问组件状态。 当你使用'client'时,JSF容器假设客户端将存储组件状态,不需要服务器内存,但客户端每次都需要发送组件状态,因此带宽会增加。

在您的情况下,问题可能是转换错误(您发送的是“项目”列表)。

要发现可能隐藏在消息中的错误,请使用开发模式:

<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
</context-param>

【讨论】:

    猜你喜欢
    • 2014-08-05
    • 2015-01-10
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 2011-08-26
    • 2012-12-18
    • 1970-01-01
    相关资源
    最近更新 更多