Because this is the way JSF is working, and this is correct according to Java Bean principles. Getter can be called multiple times, as much as the caller wishes.
The value
attribute of p:dataTable
expects getter method and is calling that method multiple times. You can't guarantee how many times will a getter be called. Instead, you should do no logic in getter method.
Instead, provide the method that will be called by your p:commandButton
and refresh the collection there. dofind
should be the field of JavaBean with the list of rows, no logic should be done there.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…