Я знаю, что мы не можем повторить идентификатор любого компонента, который у нас есть в одном дереве.
У меня есть страница, которая включает в себя другие страницы с определенным условием Как это...
<h:panelGroup rendered="#{bean.insertMode == 'SINGLE'}">
<ui:include src="_single.xhtml" />
</h:panelGroup>
<h:panelGroup rendered="#{bean.insertMode == 'DOUBLE'}">
<ui:include src="_double.xhtml" />
</h:panelGroup>
Теперь на этих страницах у меня есть "Почти" одна и та же иерархия компонентов (Complex) с поведением действий разных (не только вызовы методов, но и просмотр), например:
_single.xhtml
<p:inputText id="fieldID" value="#{bean.value}" />
<p:commandLink actionListener="#{bean.singleAction()}" />
_double.xhtml
<p:inputText id="fieldID" value="#{bean.value}" />
<p:commandLink actionListener="#{bean.doubleAction()}" />
Мой маленький пример отлично работает и отображает, как он предполагал, но я получаю
java.lang.IllegalStateException: Component ID fieldID has already been found in the view.
Я знаю, что JSF обрабатывает полные страницы, даже если они не включены и почему я получаю это исключение.
Любой умный способ решить эту проблему без изменения идентификаторов компонентов внутри включенных страниц (хотя он работает, но исключение раздражает и кажется что-то не так).
Я не хочу также обертывать каждую из страниц некоторым компонентом контейнера с другим идентификатором, поэтому у них будет другой FULL ID, такой как formId: fieldID, потому что главная страница также ссылается на эти компоненты внутри этих включает!