Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 Can';t在依赖ui:params的ui:include页面上使用复合组件_Jsf 2 - Fatal编程技术网

Jsf 2 Can';t在依赖ui:params的ui:include页面上使用复合组件

Jsf 2 Can';t在依赖ui:params的ui:include页面上使用复合组件,jsf-2,Jsf 2,我有一个使用ui:include包含另一个页面的基本页面。ui:include使用ui:param将参数传递给包含的页面。参数在包含页控制器的PostConstruct方法中读取 在我将复合组件添加到基本页面之前,这种设计工作得很好;添加后,包含的页面控制器报告ui:param的值为null。一旦我从页面中删除了复合组件,ui:param就可以被包含页面的控制器读取(即不为null)。请帮忙 复制问题的文件: myPage.xhtml <html xmlns:ui="http://jav

我有一个使用ui:include包含另一个页面的基本页面。ui:include使用ui:param将参数传递给包含的页面。参数在包含页控制器的PostConstruct方法中读取

在我将复合组件添加到基本页面之前,这种设计工作得很好;添加后,包含的页面控制器报告ui:param的值为null。一旦我从页面中删除了复合组件,ui:param就可以被包含页面的控制器读取(即不为null)。请帮忙


复制问题的文件:

myPage.xhtml

<html xmlns:ui="http://java.sun.com/jsf/facelets"   
      xmlns:mycomponents="http://java.sun.com/jsf/composite/mycomponents">

    <ui:include src="includePage.xhtml">
        <ui:param name="myParam" value="myValue"/>
    </ui:include>

    <p/>

    <mycomponents:myComponent/>

</html>
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets">

    The value of the param is: #{includedPageController.myParam}

</ui:composition>
请参阅:。在JSFAPI中没有做这类事情的标准。应使用复合或自定义组件,而不是include/param标记组合

<html xmlns="http://www.w3.org/1999/xhtml"   
      xmlns:composite="http://java.sun.com/jsf/composite">

      <composite:interface/>

      <composite:implementation>
        I am the composite component
      </composite:implementation>

</html>
@ManagedBean
public class IncludePageController
{
    String myParam;

    @PostConstruct
    private void init()
    {
        FaceletContext faceletContext = (FaceletContext)FacesContext.getCurrentInstance().
                getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
        myParam = (String)faceletContext.getAttribute("myParam");               
    }   

    public String getMyParam()
    {       
        return myParam;
    }

    public void setMyParam(String myParam)
    {
        this.myParam = myParam;
    }   
}