【发布时间】:2013-06-07 11:38:07
【问题描述】:
我在primefaces selectOneRadio上放了一个valueChangeListener,以根据所选选项在页面上呈现一些组件,但它不起作用
<p:selectOneRadio id="Gender"
value="#{someBean.booleanVariable}"
required="true"
valueChangeListener="#{personBean.triggerGender}">
<f:ajax execute="@this" listener="#{personBean.triggerGender}" render="triggerGender" />
<f:selectItem itemLabel="Female" itemValue="female" />
<f:selectItem itemLabel="Male" itemValue="male" />
</p:selectOneRadio>
personBean
public class ReportPerson {
private boolean female, male = true;
public void triggerGender(ValueChangeEvent e) {
System.err.println("Fired");
if (e.getNewValue().equals("female")) {
female = true;
male = false;
}
}
这是 JSF 页面中将根据布尔值 female 和 male 的值呈现的组件
<h:form id="triggerGender">
<h:outputLabel value="Does he has " styleClass="Labels"
rendered="#{personBean.male}" />
<h:outputLabel rendered="#{personBean.male}" />
<h:outputLabel rendered="#{personBean.male}" />
<h:outputLabel for="Moustache" value="Mustache ?"
styleClass="Labels" rendered="#{personBean.male}" />
<p:selectBooleanCheckbox
value="#{personBean.personDescription.moustach}"
rendered="#{personBean.male}" />
<h:outputLabel rendered="#{personBean.male}" />
<h:outputLabel value="Beared ? " styleClass="Labels"
rendered="#{personBean.male}" />
<p:selectBooleanCheckbox
value="#{personBean.personDescription.beared}"
rendered="#{personBean.male}" />
<h:outputLabel rendered="#{personBean.male}" />
<h:outputLabel value="Does she wear " styleClass="Labels"
rendered="#{personBean.female}" />
<h:outputLabel rendered="#{personBean.female}" />
<h:outputLabel rendered="#{personBean.female}" />
<h:outputLabel value="Describe?" styleClass="Labels"
rendered="#{personBean.female}" />
<p:selectBooleanCheckbox
value="#{personBean.personDescription.hijab}"
rendered="#{personBean.female}" />
<h:outputLabel rendered="#{personBean.female}" />
</h:form>
当我将单选按钮更改为女性时,声明 Fired 会打印在控制台中,但上面的组件未呈现 w
【问题讨论】:
-
您的代码中没有错字吗? (
<h:outputLabel rendered="#{personBeann.female}" />应该是<h:outputLabel rendered="#{personBean.female}" />) -
不,这是复制/粘贴的错误,在我的原始代码中一切正常
标签: ajax jsf jsf-2 primefaces selectoneradio