2011-01-06 18 views
5

ho creato un componente composito JSF per estendere h: InputBoxJSF composito componente ID

 <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 "firstName: firstName".

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

È una convenzione di denominazione standard con modelli JSF 2.0? Non ho ottenuto questo con i modelli Facelets JSF 1.2. C'è un modo per generare l'ID come solo "firstName" invece di "firstName: firstName"

risposta

9

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

Anche il componente composito ha il proprio ID. Lo stai fondamentalmente riutilizzando sui componenti nell'implementazione del componente composito. Si consiglia di prendere in considerazione l'aggiunta o la ridenominazione di un altro attributo ID per i componenti nell'implementazione. Per esempio.

<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 fisso o generato automaticamente id di my:inputText. Si può anche semplicemente lasciare via e utilizzare

<h:inputText id="input"> 

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

Problemi correlati