我是Primefaces的新手。现在我正在将RichFaces迁移到Primefaces5.1。在RichFaces中,每个表单都有绑定initForm来绑定页面属性。在相同的表单绑定中,使用PrimeFaces或任何其他属性来绑定页面特性。
我在Richfaces中使用以下代码:
<f:subview id="testSubView">
<h:form id="testForm" binding="#{test.initForm}">
........
</h:form>
<f:subview>
Test.java
public HtmlForm initForm()
{
fetchIntialPageAttributes();
return initForm
}
private void fetchIntialPageAttributes()
{
userTextbox="";
messagePanelRender=true;
userCommandButton=true;
userCommanButtonValue="save";
}
现在,当表单加载Primefaces中使用的相同绑定属性时,最初怀疑是否绑定。
使用<f:event type="postAddToView">
,或者<f:event type="preRenderView">
,在视图构建期间将组件添加到视图之后,或者在视图呈现时间之前,立即触发托管bean侦听器方法。
<h:form id="testForm">
<f:event type="postAddToView" listener="#{test.fetchIntialPageAttributes}" />
...
</h:form>
请注意,这一切并不是PrimeFaces(也不是RichFaces(特有的,而是JSF本身特有的。binding
属性在JSF 1.x时代实际上是一种破解/变通方法。这也是JSF 2.0添加这些新组件系统事件和<f:event>
标记的原因之一。一个理想的JSF2.x页面在任何地方都不会在backingbean属性上使用binding
。
另请参阅:
- ';绑定';JSF中的属性工作?何时以及如何使用