dynamiczny ui: include z ui: fragment: komponent z renderowanym false nadal tworzy drzewo komponentów
Siła zmuszam do używania bardzo starej wersji MyFaces 2.0.5 Myślę, że i dynamiczne dołączanie do EL powoduje tak duży problem, więc przełączam się na statyczne włączanie z ui: fragment
<ui:fragment rendered="#{filtersPopup.filterFileName == 'checkBoxFilters'}">
checkBoxFilters
<ui:include src="/analytics/checkBoxFilters.xhtml" rendered="#{filtersPopup.filter != null}"/>
</ui:fragment>
<ui:fragment rendered="#{filtersPopup.filterFileName == 'DateRelativeFilter'}">
DateRelativeFilter
<ui:include src="/analytics/DateRelativeFilter.xhtml" rendered="#{filtersPopup.filter != null}"/>
</ui:fragment>
<ui:fragment rendered="#{filtersPopup.filterFileName == 'listboxFilter'}">
listboxFilter
<ui:include src="/analytics/listboxFilter.xhtml" rendered="#{filtersPopup.filter != null}"/>
</ui:fragment>
Dzięki temu wciąż narzeka na duplikat identyfikatora, ponieważ używam tego samego identyfikatora w parach tych plików źródłowych. Więc wydaje się, że nawetrendered
powinno byćfalse
, nadal trafia do drzewa komponentów. Jednak duplikat id jest w porządku. Mogę to naprawić łatwo, więc teraz, kiedy przesyłam formularz, otrzymałem ten wyjątek
/analytics/checkBoxFilters.xhtml at line 24 and column 118 value="#{filtersPopup.filter.groups}": Property 'groups' not found on type ListBoxFilter
tak jak widać z wyjątku, toListBoxFilter
jest obiektem, którego chcę, więc dołącz tylko ListBoxFilter.xhtml, ale jest dostępnycheckBoxFilters.xhtml
stąd błąd. Masz pomysł, jak rozwiązać ten problem?