繁体   English   中英

在对话作用域Bean中构建列表

[英]Building a List within Conversation Scoped Bean

我在Primefaces 5和JSF 2.1上遇到问题。

我现在无法在平板电脑上发布代码,但是我将提供基本说明并稍后上传代码。

我有一个ConversationScoped CDI bean和一个具有5个文本字段的JSF页面,映射到一个实体,一个primefaces dataView和一个按钮。 我想要做的是继续将字段中的数据添加到dataView中。

我在Bean类中有一个列表,说是private List<dataEntity> data = new ArrayList<dataEntity>

并且我有一个方法,该方法通过按下将数据添加到数组的按钮来触发,但是每次添加数据时,列表中的所有条目都会被最新的条目替换。

本质上,该列表包含第N个条目的N个副本

我考虑过将每个条目保存到数据库中并从中填充列表,但这似乎是不合逻辑的。

在最近的两天里,这让我很沮丧。 任何人都可以对这个问题提出一些解决方案。 如果可能的话,我想使用CDI bean而不是JSF Managed。

谢谢

既然这里没有代码,我将不得不作一些猜测,但是我认为问题出在您的@ConversationScoped bean,或者更确切地说是对其生命周期的理解。

除非您使对话长时间运行,否则此作用域的作用与@RequestScoped -在每个请求后将其丢弃并在新请求后重新创建,这意味着每次将重新创建其中的List

您想要的是使对话长时间运行,通常可以通过以下方式进行:

@ConversationScoped
public class YourBean {

    @Inject Conversation conversation

    // call this sometime within the first request
    public void conversationStartingMethod() {
        conversation.begin();
    }

}

或者,您可以改为使用@SessionScoped bean,这将使其在整个HTTP会话中都处于活动状态(或除非超时/无效)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM