动态UI包含和P:SelectOneMenu之间是否存在不兼容性

问题描述 投票:-1回答:1

我有一个包含动态内容的UI,当我按下某个命令链接时,将加载此内容。问题是,当我按下命令链接时,加载的UI包括没有创建PrimeFace的Javascript:

这个问题可能与@Resource Dependency有关。

这是我的控制器:

@Named
@ViewScoped
public class Test {

    private String value;
    private List<String> options=new ArrayList<>();
    private String url="";

    public String changeUrl(){
        url="/snippets/test2.xhtml";
        return "#";
    }

    @PostConstruct
    public void init(){
        options.add("test 1");
        options.add("test 2");
        options.add("test 3");
        options.add("test 4");

    }

    //getter and setter
}

这个xhtml页面:

<h:form>
text
<ui:include src="#{test.url}" />
<p:commandLink action="#{test.changeUrl()}" value="submit" process="@this" update="@form"/>
</h:form>

这包括页面:

<ui:composition>
    <h:form>
    <p:selectOneMenu value="#{test.value}">
    <f:selectItems value="#{test.options}"/>
    </p:selectOneMenu>
    </h:form>
    </ui:composition>
jsf primefaces
1个回答
2
投票

这里有两个问题:包含页面中的ui:composition声明缺少所有必需的命名空间声明,并且您正在另一个表单中嵌入表单。

您包含的页面应如下所示:

<ui:composition
  xmlns="http://www.w3.org/1999/xhtml"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:p="http://primefaces.org/ui">
 <p:selectOneMenu value="#{test.value}">
  <f:selectItems value="#{test.options}"/>
 </p:selectOneMenu>
</ui:composition>
© www.soinside.com 2019 - 2024. All rights reserved.