单击commandButton时多次使用dataTable调用方法。为什么?

时间:2014-03-26 13:18:11

标签: jsf primefaces

<p:commandButton value="Get Name List" update="nameinfo"/>
<p:dataTable id="nameinfo" var="nam" value="#{namefinder.dofind}"></p:dataTable>
  • “namefinder”是托管bean [@ManagedBean(name =“namefinder”)]
  • “dofind”是查找名称列表的方法,它将值作为名称列表对象列表返回

    问题是:“dofind”方法被调用7次。

    为什么要这样做?

1 个答案:

答案 0 :(得分:2)

因为这是JSF的工作方式,根据Java Bean原则这是正确的。可以多次调用Getter,就像调用者所希望的那样。

value的{​​{1}}属性需要getter方法,并且多次调用该方法。你无法保证呼叫吸气器的次数。相反,你应该在getter方法中不做任何逻辑。

相反,提供将由p:dataTable调用的方法并在那里刷新集合。 p:commandButton应该是带有行列表的JavaBean字段,不应该在那里进行逻辑。