我有一個用JSF 2.0 + PrimeFaces 3.4編寫的標記庫,現在我試圖更新到JSF 2.2和PrimeFaces 4.0。 但我意識到傳遞給組件評估的屬性的值,並導致渲染錯誤的ID。#{cc.clientId}在升級到JSF 2.2後以錯誤的組合方式進行評估
enum.xhtml(複合部件)
<cc:interface>
<cc:attribute name="render" default="@this"/>
.....
</cc:interface>
<cc:implementation>
<h:selectOneMenu ......../>
<p:ajax update="#{cc.attrs.render}" process="#{cc.attrs.execute}" />
</cc:implementation>
用法:
<t:enum id="authenticationSource" value="#{authenticationStrategy}" .....
render=":#{cc.clientId}:tabView:passwordVisibility"/>
渲染屬性值,其:#{cc.clientId}:tabView:passwordVisibility
,應該是
:j_idt1:j_idt3:j_idt5:editorDialog:j_idt39:j_idt40:tabView:passwordVisibility`
但它被評價爲
:j_idt1:j_idt3:j_idt5:editorDialog:j_idt39:j_idt40:tabView:autheticationSource:tabView:passwordVisibility
渲染的屬性值在複合組件中評估並導致錯誤。應該對它的使用進行評估,就像JSF 2.0中那樣。 是否有任何配置屬性或任何可以克服此錯誤的東西。
我正在使用wildfly 8.1.0-最終
也許'周圍的任何元件t:enum'已經成爲一種命名容器?是否有ID爲'autheticationSource'的元素? – Smutje 2014-09-24 13:21:01