Pregunta

I creó un componente compuesto JSF para extender h: inputBox

        <p class="label clear">
            <label for="#{cc.attrs.id}" class="">
                #{cc.attrs.label}:
            </label>
        </p>
        <p>
            <h:inputText id="#{cc.attrs.id}" value="#{cc.attrs.value}" 
                size="#{cc.attrs.size}" />
            <ui:fragment rendered="#{cc.attrs.optional eq 'optional'}">
                <span class="optional">Optional</span>
            </ui:fragment>
        </p>

Para utilizar este componente ..

<my:inputText id="firstName" label="First Name" value="#{nameTO.firstName}"/>

Cuando este componente se representa en el navegador, el ID es del formato. "Nombre: Nombre"

<input type="text" value="" name="firstName:firstName" id="firstName:firstName" gtbfieldid="3028">

¿Es esta una convención de nomenclatura estándar con plantillas JSF 2.0? No he tenido esto con JSF 1.2 Facelets plantillas. ¿Hay alguna manera de generar el ID simplemente como "Nombre" en lugar de "Nombre: Nombre"

¿Fue útil?

Solución

A JSF 2.0 componente de material compuesto no es lo mismo que un JSF 1.x / 2.x Facelets plantilla.

El componente de material compuesto tiene su propio ID también. Básicamente, se está reutilizando en los componentes de la implementación del componente de material compuesto. Es posible que desee considerar la posibilidad de añadir o cambiar el nombre de otro atributo de identificación para los componentes de la aplicación. Por ejemplo.

<my:inputText name="firstName" label="First Name" value="#{nameTO.firstName}" />

con

<h:inputText id="#{cc.attrs.name}">

Se va sin embargo terminan como id="ccId:firstName" en HTML donde ccId es o bien el id fijo o autogenerado de my:inputText. También se puede dejar a la basura y el uso

<h:inputText id="input">

Lo que termina como id="firstName:input" en HTML.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top