如何在CDI转换范围中保存值?

时间:2015-06-15 22:07:27

标签: jsf cdi jsf-2.2

我尝试将对象添加到LinkedList辅助bean中的@ConversationScoped

@Named
@ConversationScoped
public class CategoryController implements Serializable{
...
    private List<Category> selectedCategories = new LinkedList<Category>();
...
    @PostConstruct
    public void initNewMember() {
        conversation.begin();
        newCategory = new Category();
        loadExistingCategories();
    }
...
}

我想用新对象(类型类别)发送ajax请求。它们应该简单地添加到链表中。

this.selectedCategories.add(newParentCategory);

使用ajax渲染属性<f:ajax render="allSelectedCategories"/>,我立即渲染输出文本以渲染对象列表。

<h:outputText id="allSelectedCategories" value="#{categoryController.selectedCategories}" />

是的,显示了我点击的对象,但之前点击的对象消失了。

在“对话”期间,值不会在内存中序列化/保留。我需要做些什么才能使转换范围暂时保留ajax调用的值?

我真的很想习惯CDI并放弃这个项目的ManagedBean路径(例如@ViewScoped),尽管它就像魅力一样。

另外,我无法在CDI会话范围上重现以下tutorial。我只是无法通过添加

来调试initConversation
<f:event listener="#{categoryController.initConversation}"
        type="preRenderView"></f:event>

0 个答案:

没有答案