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
 
     
     
    
