2011-01-06 102 views
5

我創建了一個JSF複合部件延長H:的InputBoxJSF複合組件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> 

要使用該組件..

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

當該組件在瀏覽器中呈現時,ID是的格式爲「firstName:firstName」。

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

這是JSF 2.0模板的標準命名約定嗎?我沒有得到這與JSF 1.2 Facelets模板。 是否有任何生成ID的方法,只是「firstName」而不是「firstName:firstName」

回答

9

JSF 2.0複合組件與JSF 1.x/2.x Facelets模板不同。

複合組件也有它自己的ID。您基本上將它重用於實現複合組件的組件上。您可能需要考慮爲實施中的組件添加或重命名另一個ID屬性。例如。

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

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

它會然而最終成爲id="ccId:firstName"在HTML其中ccId要麼固定或自動生成的my:inputTextid。你也可以把它拿走並使用

<h:inputText id="input"> 

在HTML id="firstName:input"從而結束了。