我有一个包含参数bean的包含文件,用于两个具体的 java BeanA和BeanB类。
BeanB类有其他方法,因此我检查了 render 属性以不访问不可用的方法:
看法:
<ui:include src="/inc_bean.xhtml">
<ui:param name="bean" value="#{beanB}"/>
</ui:include>
使用 var 包含文件bean
:
<p:tabView>
<p:tab>
<!-- content shall only be rendered if instance of BeanB -->
<h:panelGroup rendered="#{bean.class.simpleName eq 'BeanB'}">
<h:form>
<h:inputText value="#{bean.propertyB}"/>
</h:form>
</h:panelGroup>
</p:tab>
</p:tabView>
当我将包含与BeanA类一起使用时,在 glassfish 4.1.1 和 JSF mojarra 2.2.9 中出现以下错误:
类“BeanA”没有属性“propertyB”。
解决方法:
将内部内容包装在一个新的强类型(BeanB)组合中。
包含文件:
<p:tabView>
<p:tab>
<comp:beanB bean="#{bean}" rendered="#{bean.class.simpleName eq 'BeanB'}"/>
</p:tab>
</p:tabView>