h:selectOneMenu valueChangeListener does not work
pepelara Oct 10, 2012 1:30 AMI have some h:selectOneMenu in my xhtml file which I have to validate.
Here is an example of my code,
<h:panelGroup id="inCCTypePanel">
<h:form id="inCCTypeForm">
<h:panelGrid rendered="#{carritoBean.carritoSelected and !(carritoBean.pedidoAbonado or carritoBean.pedidoCancelado)}">
<rich:panel style="width:150px;">
<f:facet name="header">Tipo de tarjeta</f:facet>
<h:selectOneMenu id="cctId" value="#{carritoBean.cCard}" valueChangeListener="#{carritoBean.changeCCType}"
required="true" requiredMessage="Selected credit card type is required.">
<f:selectItem itemValue="" itemLabel="Default" />
<f:selectItem itemValue="american" itemLabel="American Express" />
<f:selectItem itemValue="dinner" itemLabel="Dinner's Club" />
<f:selectItem itemValue="discover" itemLabel="Discover" />
<f:selectItem itemValue="master" itemLabel="Master Card" />
<f:selectItem itemValue="visa" itemLabel="Visa" />
<a4j:ajax event="valueChange" render="validateCCTypePanel" execute="@this"/>
</h:selectOneMenu>
</rich:panel>
<a4j:outputPanel id="validateCCTypePanel">
<h:panelGrid rendered="#{carritoBean.cCardSelected and !(carritoBean.pedidoAbonado or carritoBean.pedidoCancelado)}">
<h:inputHidden id="idCCType" value="#{carritoBean.cCard}" >
<f:validator validatorId="creditCardTypeValidator" />
</h:inputHidden>
<a4j:commandButton value="Credit Card Type Validate" action="#{carritoBean.validateCCType}" >
<f:ajax execute="@form" render="@form :outCCDataPanel :outCCDataForm" />
</a4j:commandButton>
</h:panelGrid>
</a4j:outputPanel>
</h:panelGrid>
</h:form>
</h:panelGroup>
and here is the bean code,
public void changeCCType(ValueChangeEvent event) {
cCard = null != event.getNewValue() ? (String)event.getNewValue() : null;
System.out.println("Selected Credit Card: " + cCard);
cCardSelected = (cCard != null);
}
public void validateCCType() {
showCCType = cCardSelected;
}
What I pretend is to catch cCard in the valueChangeListener event
and once it is set validate.
But I do not why this does not work.
Any suggestion will be appreciated.
Thanking in advance,
Jose
