concatenar String

Concatenar String

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>

Definir variables para concatenar.

        <composite:implementation>
        <c:set var="appreciated" value="item.#{cc.attrs.selectItemsLabel}" />
        <c:set var="a" value="#{$appreciated  }" />

Genera

 itemLabel="#{item.tienda}"

Código Completo del componente

<?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>

Llamado

   <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>

Last updated