所以我们有一个 f:event:
<f:metadata>
<f:event type="preRenderView" listener="#{dashboardBacking.loadProjectListFromDB}"/>
</f:metadata>
在初始页面加载(渲染)时根据需要触发。
然而,这个 preRenderView 事件也由 ajax 部分页面渲染触发,它重新渲染一个带有 id projectListing 的 h:panelgroup,如下所示。
<h:commandButton action="#{mrBean.addProject}" value="Create Project"
title="Start a new project">
<f:ajax render="projectListing" />
</h:commandButton>
我只想在初始页面呈现时调用dashboardBacking.loadProjectListFromDB,而不是在有ajax 部分呈现时调用。我可以使用更合适的事件或方法吗?
最佳答案
另一种选择是把你的 preRenderView
@PostConstruct
中的功能ViewScoped
的方法托管 bean 。这个逻辑将在 bean 初始化时执行,并且您为所有 ajax 请求维护 bean 的相同实例,直到您更改 View 。
关于ajax - JSF f :event preRenderView is triggered by f:ajax calls and partial renders, 还有什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2830834/