我认为我被迫使用非常旧的 MyFaces 2.0.5 版本,并且动态包含与 EL 会导致很多问题,所以我切换到静态包含与 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>
有了这个,它仍然抱怨重复的 id,因为我在这些源文件的几个上使用了相同的 id。所以看起来即使rendered
应该是false
,它仍然可以进入组件树。但是重复的 id 很好。我可以很容易地解决这个问题,所以现在当我提交表单时,我得到了这个异常
/analytics/checkBoxFilters.xhtml at line 24 and column 118 value="#{filtersPopup.filter.groups}": Property 'groups' not found on type ListBoxFilter
所以你可以从异常中看到,它ListBoxFilter
是我想要的对象,所以只包含 ListBoxFilter.xhtml,但正在被访问,checkBoxFilters.xhtml
因此出现错误。知道如何解决这个问题吗?