<b:selectOneMenu> eventos Ajax

Bootfaces ofrece el componente <b:selectOneMenu, si deseamos invocar algún evento necesitamos hacerlo mediante ajax

# Ejemplo 1:

Deseamos que al seleccionar el tipo de ubicación se habilite el selectOneMenu Correspondiente

En el selectOneMenu usar el método onchange, update, process

  onchange="ajax:usuarioController.onUbicacionChange()"
  update="@parent" process="@form"

.xhtml

<p:outputLabel  value="#{msg['field.ubicacion']}" />
                        <b:selectOneMenu value="#{usuarioController.almacen}"
                                         update="@parent" process="@form"
                                         colMd="2" 
                                         required="true" 
                                         onchange="ajax:usuarioController.onUbicacionChange()"

                                         requiredMessage="#{app['title.activo']} #{app['info.notnull']}"
                                         labelColMd="2" >
                            <f:selectItem itemLabel="#{msg['field.tienda']}" itemValue="tienda" />
                            <f:selectItem itemLabel="#{msg['field.ganga']}" itemValue="ganga" />
                            <f:selectItem itemLabel="#{msg['field.bodega']}" itemValue="bodega" />

                        </b:selectOneMenu>

                        <p:outputLabel  value="#{msg['field.ubicacion']}" />
                        <p:outputLabel  value="#{usuarioController.almacen}" />


                        <p:outputLabel  value="#{msg['field.tienda']}"  rendered="#{usuarioController.estienda}"/>
                        <a:selectOneMenu
                            id="tienda"
                            required="false"
                            rendered="#{usuarioController.estienda}"
                            value="#{usuarioController.tienda}" 
                            requiredMessage="#{msg['field.idtienda']}"
                            selectLabel="#{app['selectonemenu.select']}"
                            selectValue="#{null}"
                            selectDisable="false"
                            selectItemsValue="#{usuarioController.tiendaServices.tiendaList}"
                            selectItemsLabel="#{item.tienda}"                            
                            />


                        <p:outputLabel value="#{msg['field.ganga']}" rendered="#{usuarioController.esganga}"/>
                        <a:selectOneMenu
                            id="ganga"

                            rendered="#{usuarioController.esganga}"
                            required = "false"
                            value="#{usuarioController.ganga}" 
                            requiredMessage="#{msg['field.idganga']}"
                            selectLabel="#{app['selectonemenu.select']}"
                            selectValue="#{null}"
                            selectDisable="false"
                            selectItemsValue="#{usuarioController.gangaServices.gangaList}"
                            selectItemsLabel="#{item.ganga}"                            
                            />


                        <p:outputLabel  value="#{msg['field.bodega']}" rendered="#{usuarioController.esbodega}"/>
                        <a:selectOneMenu
                            id="bodega"
                            required="false"
                            rendered="#{usuarioController.esbodega}"
                            value="#{usuarioController.bodega}" 
                            requiredMessage="#{msg['field.idbodega']}"
                            selectLabel="#{app['selectonemenu.select']}"
                            selectValue="#{null}"
                            selectDisable="false"
                            selectItemsValue="#{usuarioController.bodegaServices.bodegaList}"
                            selectItemsLabel="#{item.idbodega}"                            
                            />

Controller

@Named
@ViewScoped
public class UsuarioController implements Serializable, IController {
    private Boolean esbodega = false;
    private Boolean estienda = true;
    private Boolean esganga = false;

@PostConstruct
    public void init() {
        try {
            esbodega = false;
             estienda = true;
             esganga = false;

             ...
 }

public String onUbicacionChange() {
    estienda=false;
    esbodega=false;
    esganga= false;
    try {
        switch(almacen){
            case "tienda":
                estienda=true;
                break;
            case "bodega":
                esbodega = true;
                break;
            case "ganga":
                esganga=true;
                break;

        }

    } catch (Exception e) {
        JsfUtil.errorMessage("onUbicacionChange() "+e.getLocalizedMessage());
    }
return "";
}

# Ejemplo 2:

 <b:selectOneMenu id="security" value="#{generador.mySesion.securityHttpSession}" 
                                            onchange="ajax:generador.onComboboxChange()"
                                             update=":form:segundosparainactividad">
                                <f:selectItem itemLabel="no" itemValue="no"  itemDescription="No implementa seguridad HttpSession" />
                                <f:selectItem itemLabel="si" itemValue="si"  itemDescription="implementa seguridad HttpSession" />                                

                            </b:selectOneMenu>

                            <p:outputLabel value="Segundos para inactividad"/>
                            <b:inputText id="segundosparainactividad" disabled="#{generador.mySesion.securityHttpSession eq 'no'}" value="#{generador.mySesion.segundosParaInactividad}"/>

En el controller

 public String onComboboxChange() {
       System.out.println("SecurityHttpSession() "+mySesion.getSecurityHttpSession());
       return "";
   }

Last updated