<p:commandButton value="Get Name List" update="nameinfo"/>
<p:dataTable id="nameinfo" var="nam" value="#{namefinder.dofind}"></p:dataTable>
“dofind”是查找名称列表的方法,它将值作为名称列表对象列表返回
问题是:“dofind”方法被调用7次。
为什么要这样做?
答案 0 :(得分:2)
因为这是JSF的工作方式,根据Java Bean原则这是正确的。可以多次调用Getter,就像调用者所希望的那样。
value
的{{1}}属性需要getter方法,并且多次调用该方法。你无法保证呼叫吸气器的次数。相反,你应该在getter方法中不做任何逻辑。
相反,提供将由p:dataTable
调用的方法并在那里刷新集合。 p:commandButton
应该是带有行列表的JavaBean字段,不应该在那里进行逻辑。