我正在Liferay中使用Primefaces开发一个应用程序,我需要使用p:treeTable compenent,当点击p:commandButton时,节点会消失。我相信它与ajax有关系,如果将代码放在@PostConstruct中的managedBean中,它可以正常工作
这是我的.xhtml
-cp
我的managedBean
java
我确实试图解决它,但没有成功。
答案 0 :(得分:0)
尝试将ManagedBean的范围更改为@ViewScoped
(BalusC discussing scopes)由于此bean当前定义为@RequestScoped
,因此将为每个请求创建并销毁新实例。我只是在这里猜测,但是当你的commandButton通过ajax POST时,JSF意识到它必须在“RESTORE_VIEW”阶段重建ManagedBean,但是这个某种程度上实际上并没有调用构造函数,因为它正在处理一个ajax请求。不过,根据您的发现,无论请求是否为ajax,JSF 必须在“RESTORE_VIEW”阶段调用@PostConstruct
方法。
换句话说,treeTable从页面中消失,因为那时它在服务器端不存在。