How to hold values in a CDI conversion scope?

115 Views Asked by At

I try to add a object to a LinkedList in a @ConversationScoped backing bean.

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

I want to send an ajax request with new objects (of type category). They should simply be added to the linked list.

this.selectedCategories.add(newParentCategory);

With the ajax render attribute <f:ajax render="allSelectedCategories"/> I immediately render the output text to render the object list.

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

And yes, the object I clicked is displayed, but the previously clicked objects are gone.

The values do not serialize/persist in memory during my "conversation". What do I need to do to make that conversion scope temporarily persist the values of the ajax calls?

I really want to get used to CDI and abandon the ManagedBean path for this project (e.g. @ViewScoped), despite the fact that it works like a charm.


Also, I cannot reproduce the following tutorial on CDI Conversation Scope. I simply cannot debug into the initConversation by adding

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

There are 0 best solutions below