我正在尝试根据微调器的更改来更新我的表单
<p:spinner id="spin1" min="1" max="#{editPhoto.max}" size="1"
value="#{editPhoto.page}" validator="#{editPhoto.validator()}"
valueChangeListener="#{editPhoto.refreshForm()}" />
<p:commandButton value="Insert" action="#{editPhoto.insertImage()}" />
<p:commandButton value="Delete" action="#{editPhoto.deleteImage()}" />
我在值,setPage以及validator和valueChangeListener中添加了断点,当我按下commandButton时它会点击 。我试过立即=“真实”,但这没有增加任何东西。我真正想要的是知道值何时被更改,但无需点击commandButton。
在之前的question BalusC建议使用
<f:event type="preRenderView" listener="#{nextpageBacking.onPreRenderView}" />
我怀疑我需要类似的东西,但我应该寻找什么样的事件?也许不是,那么我需要做什么才能在不需要按下commandButton的情况下更改微调器?谢谢,伊兰
我的bean是视图范围的。也许答案是使用另一个请求scoped-bean并让请求scoped-bean对视图范围的bean进行操作?如果这看起来像是正确的方向,我会尝试这个。
答案 0 :(得分:4)
您应该使用f:ajax
或p:ajax
。
valueChangeListener只会在提交整个表单或微调器时触发。
<p:spinner id="spin1" min="1" max="#{editPhoto.max}" size="1"
value="#{editPhoto.page}" validator="#{editPhoto.validator()}">
<p:ajax listener="#{editPhoto.refreshForm()}"
update="@form" process="@this" />
</p:spinner>
微调器的valueChangeListener
属性不是解雇方法的最佳位置。您最好将其放在listener
的{{1}}属性中。如果您对旧的和感兴趣,则应使用valueChangeListener。