<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
Was this helpful?