我有一个包含ui:repeat
的primefaces向导,如下所示:
<p:wizard flowListener="#{reportWizard.onFlowProcess}" widgetVar="wiz" showStepStatus="false" showNavBar="false">
<p:tab id="problem" title="Problem">
<p:panel header="What's the problem?" styleClass="wizardPanel">
<p:messages />
<h:panelGrid width="100%" columns="1">
<ui:repeat value="#{incidentData.incidentTypes}" var="incidentTypes">
<p:commandButton process="@this" value="#{incidentTypes.name}" actionListener="#{reportWizard.evalProblemType}" onclick="PF('wiz').next();" styleClass="ui-priority-primary" />
</ui:repeat>
</h:panelGrid>
</p:panel>
</p:tab>
// ... more tabs ...
</p:wizard>
基本上,我只是通过
从我的数据库中获取commandButton
个标题
#{incidentData.incidentTypes}
。
以前,我有一个commandButton
s的静态列表,它工作正常,但现在我正在使用ui:repeat
,它使页面非常慢(向导的每一步都需要一个第二或第二回应)。出于某种原因,当向导前进到每个步骤时,会多次调用getIncidentTypes()
,即使按钮仅在向导的第一步中,并且查询应该只运行一次。这是为什么?
这不是使用数据库驱动按钮的正确方法吗?我该怎么做才能解决这个问题?感谢。