相关疑难解决方法(0)

JSF中包含空值的条件包含

我希望我对JSF的理解是正确的,这一切都是有道理的。我尝试通过使用(条件)包含在页面内进行某种简单的模板化。通过选择来更新面板。

<p:outputPanel id="panel">
  <h:panelGroup rendered="#{not empty someBean.selectedObject}">
    <ui:include src="WEB-INF/pages/#{someBean.selectedObject.pageName}.xhtml" />
  </h:panelGroup>
</p:outputPanel>
Run Code Online (Sandbox Code Playgroud)

如果我是对的,那么ui:include将在某种形式的视图准备阶段处理该rendered属性,并在页面呈现之前处理该属性。结果,我得到一个FileNotFoundException,因为它试图加载WEB-INF / pages / .xhtml。这对我来说很有意义,但是如何解决此问题而又不会出现混乱的变通办法,例如创建一个空页面作为文件名(page.xhtml)的前缀,并为应该使用此字符串实际呈现的每个页面添加前缀(pageSamplePage.xhtml) )?

jsf primefaces

3
推荐指数
1
解决办法
1305
查看次数

动态ui:包含ui:fragment:具有呈现false的组件仍然在组件树内部生成

我强行使用一个非常旧版本的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>
Run Code Online (Sandbox Code Playgroud)

有了它,它仍然抱怨重复的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
Run Code Online (Sandbox Code Playgroud)

所以从异常中可以看出,它ListBoxFilter是我想要的对象,所以只包含ListBoxFilter.xhtml,但正在访问checkBoxFilters.xhtml因此错误.知道如何解决这个问题吗?

jsf myfaces jsf-2

1
推荐指数
1
解决办法
8180
查看次数

标签 统计

jsf ×2

jsf-2 ×1

myfaces ×1

primefaces ×1