我无法在嵌套的ui中保留值:include由ui:param传递
所以说, page1.xhtml包含
<?xml version="1.0" encoding="UTF-8"?>
<ui:composition template="../template.xhtml" xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui">
<ui:param name="paramGlobal" value="123" />
<ui:define name="content">
<h:form id="frm1">
<f:view>
<ui:include src="page2.xhtml">
<ui:param name="paramInclude" value="abc"></ui:param>
</ui:include>
</f:view>
</h:form>
</ui:define>
</ui:composition>
和page2.xhtml包含
<?xml version="1.0" encoding="UTF-8"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui">
<p:panelGrid columns="2">
<p:outputLabel value="Page 2"></p:outputLabel>
<p:outputLabel value="Value"></p:outputLabel>
<p:outputLabel value="Global"></p:outputLabel>
<p:inputText value="#{paramGlobal}"></p:inputText>
<p:outputLabel value="Param Include"></p:outputLabel>
<p:inputText value="#{paramInclude}"></p:inputText>
<ui:include src="page3.xhtml">
<ui:param name="paramNestedInclude" value="def"></ui:param>
</ui:include>
</p:panelGrid>
</ui:composition>
最后是page3.xhtml包含
<?xml version="1.0" encoding="UTF-8"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui">
<p:outputLabel value="Page 3"></p:outputLabel>
<p:outputLabel value="Value"></p:outputLabel>
<p:outputLabel value="Global"></p:outputLabel>
<p:inputText value="#{paramGlobal}"></p:inputText>
<p:outputLabel value="Param Include"></p:outputLabel>
<p:inputText value="#{paramInclude}"></p:inputText>
<p:outputLabel value="Param Nested Include"></p:outputLabel>
<p:inputText value="#{paramNestedInclude}"></p:inputText>
</ui:composition>
我得到的输出是这样的:
Page 2价值
全球:[空白]
Param包括:abc
第3页:价值
全球:[空白]
Param包括:[空白]
Param Nested Include:def
我无法弄清楚为什么ui:param没有在包含的页面中传递。
答案 0 :(得分:1)
遇到了问题。
MyFaces JSF2.2中ui:param
,ui:include
和ui:composition
的工作方式为changed。
可以在web.xml
<context-param>
<param-name>org.apache.myfaces.STRICT_JSF_2_FACELETS_COMPATIBILITY</param-name>
<param-value>true</param-value>
</context-param>
这将使这些组件的行为与之前相同。