我尝试将对象添加到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>