selectOneMenu
Last updated
Was this helpful?
Last updated
Was this helpful?
Simplifica el selectOneMenu
Parámetros:
value
id
requiredMessage
required" default="true"/>
selectItemLabel
selectItemsValue
selectItemsLabel
onchange" default =""
update" default =""
Salida
A veces no deseamos que el usuario indique todo la cadena por ejemplo #{item.rol}
si no que simplemente use rol en el llamado quitando el item.
usamos concatenación de componentes.
<composite:interface >
<composite:attribute name="value" />
<composite:attribute name="id" />
<composite:attribute name="requiredMessage" />
<composite:attribute name="required" default="true"/>
<composite:attribute name="selectItemLabel" />
<composite:attribute name="selectItemsValue" />
<composite:attribute name="selectItemsLabel" />
<composite:attribute name="onchange" default ="" />
<composite:attribute name="update" default ="" />
</composite:interface>
<composite:implementation>
<c:set var="appreciated" value="item.#{cc.attrs.selectItemsLabel}" />
<c:set var="a" value="#{$appreciated }" />
Genera
itemLabel="#{item.tienda}"
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:composite="http://java.sun.com/jsf/composite"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:b="http://bootsfaces.net/ui"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
<composite:interface >
<composite:attribute name="value" />
<composite:attribute name="id" />
<composite:attribute name="requiredMessage" />
<composite:attribute name="required" default="true"/>
<composite:attribute name="selectItemLabel" />
<composite:attribute name="selectItemsValue" />
<composite:attribute name="selectItemsLabel" />
<composite:attribute name="onchange" default ="" />
<composite:attribute name="update" default ="" />
</composite:interface>
<composite:implementation>
<c:set var="appreciated" value="item.#{cc.attrs.selectItemsLabel}" />
<c:set var="a" value="#{$appreciated }" />
<b:selectOneMenu id="#{cc.attrs.id}"
value="#{cc.attrs.value}"
required="#{cc.attrs.required}"
requiredMessage="#{cc.attrs.requiredMessage} #{app['info.required']}"
update="#{cc.attrs.update}"
onchange="#{cc.attrs.onchange}"
>
<!-- TODO: update below reference to list of available items-->
<f:selectItem itemLabel="#{cc.attrs.selectItemLabel}"
itemValue="#{cc.attrs.selectItemLabel}"
itemDisabled="true"/>
<f:selectItems value="#{cc.attrs.selectItemsValue}"
var="item"
itemValue="#{item}"
itemLabel="#{a}"
/>
</b:selectOneMenu>
</composite:implementation>
</html>
<a:selectOneMenu
id="rol"
value="#{usuarioController.usuario.rol}"
requiredMessage="#{msg['field.idrol']}"
selectItemLabel="#{usuarioController.usuario.rol}"
selectItemsValue="#{usuarioController.rolServices.rolList}"
selectItemsLabel="rol"
/>
Si no usaramos el componente
<b:selectOneMenu id="tienda" value="#{rolController.usuario.rol}"
required="true" requiredMessage="#{msg['field.idrol']} #{app['info.required']}"
>
<!-- TODO: update below reference to list of available items-->
<f:selectItem
itemValue="#{usuarioController.usuario.rol}"
itemLabel="#{usuarioController.usuario.rol}"
itemDisabled="true"
/>
<f:selectItems value="#{usuarioController.rolServices.rolList}"
var="item"
itemValue="#{item}"
itemLabel="#{item.rol}"
/>
</b:selectOneMenu>