小编典典

JSF f:event preRenderView是由f:ajax调用和部分渲染触发的,还有其他吗?

ajax

因此,我们有一个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部分渲染时调用。我可以使用更合适的事件或方法吗?


阅读 425

收藏
2020-07-26

共1个答案

小编典典

另一个选择是将您的preRenderView功能放在托管bean
@PostConstruct方法中ViewScoped。初始化Bean时将执行此逻辑,并且您为所有ajax请求维护相同的Bean实例,直到更改视图为止。

2020-07-26