Domanda

ho creato un componente composito JSF estendere 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>

Per utilizzare questo componente ..

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

Quando questa componente viene eseguito il rendering del browser, l'ID è del formato. "Nome: firstName"

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

Si tratta di una convenzione di denominazione standard con i modelli JSF 2.0? Non ho avuto questo con JSF 1.2 Facelets modelli. C'è un modo per generare l'ID come solo "firstName" al posto di "Nome: firstName"

È stato utile?

Soluzione

Un JSF 2.0 componente composito non è la stessa di un JSF 1.x / 2.x Facelets modello.

Il componente composito ha un proprio ID pure. Stai fondamentalmente riutilizzo dei componenti per l'attuazione della componente composito. Si può prendere in considerazione per aggiungere o rinominare un altro attributo ID per i componenti per l'attuazione. Per es.

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

con

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

Sarà comunque finire come id="ccId:firstName" in HTML dove ccId è o il id fisso o generata automaticamente di my:inputText. Si può anche semplicemente lasciare via e l'uso

<h:inputText id="input">

Il che finisce come id="firstName:input" in HTML.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top