У меня есть библиотека тегов, которая была написана в JSF 2.0 + PrimeFaces 3.4, теперь я пытаюсь обновить JSF 2.2 и PrimeFaces 4.0. Но я понял, что значение атрибутов передается компоненту, оцениваемому в составном компоненте, и это приводит к неправильному идентификатору для рендеринга.
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"/>
Значение атрибута render, которое :#{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-Final