无论我使用什么(jsf ajax,bootsfaces,primefaces),复选框都会在第二次单击时调用bean方法。我做了很多研究,尝试使用omnifaces的fixviewstate,没有任何效果。 bean方法仅在第二次单击时触发,从不在第一次触发。 这是一个带有primefaces的例子:
<h:form id="myformexample">
<b:row>
<b:column colSm="12">
<p:selectBooleanCheckbox id="value2zz" value="#{selectedEmployeeDayBean.morningActive}">
<p:ajax update="mypane" listener="#{selectedEmployeeDayBean.clickMorning()}" />
</p:selectBooleanCheckbox>
</b:column>
</b:row>
<h:panelGroup id="mypane">
<b:row>
<b:column colSm="12">
<h:outputText value="#{selectedEmployeeDayBean.morningActive}"/>
</b:column>
</b:row>
</h:panelGroup>
</h:form>
我的支持bean方法:
public boolean isMorningActive() {
return morningActive;
}
public void setMorningActive(boolean morningActive) {
this.morningActive = morningActive;
}
public void clickMorning(){
this.morningActive = !this.morningActive;
}
我使用JSF 2.2和javaEE8,primefaces6.0 bootsfaces1.0,部署在wildfly(jboss)10.0上
我做错了什么?感谢
答案 0 :(得分:0)
表单被包装到bootsfaces模式中,并且由于任何原因,bean方法仅在第二次单击时触发,因此它不会更新表单。现在我使用由jquery触发的官方bootstrap模式,它在第一次点击时按预期工作。
修改强> 现在我的代码看起来像:
<h:form id="myformexample">
<b:row>
<b:column colSm="12">
<h:selectBooleanCheckbox value="#{selectedEmployeeDayBean.morningActive}" id="checkmorning">
<f:ajax event="click" render="mypane" execute="@this"/>
</h:selectBooleanCheckbox>
</b:column>
</b:row>
<h:panelGroup id="mypane">
<b:row>
<b:column colSm="12">
<h:outputText value="#{selectedEmployeeDayBean.morningActive}"/>
</b:column>
</b:row>
</h:panelGroup>
</h:form>