jsf2无法从复合组件引用容器页面的元素

时间:2013-02-05 19:34:25

标签: jsf-2 composite-component

launcher.xhtml

此表单使用“thing”

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:composite="http://java.sun.com/jsf/composite"
      xmlns:f="http://java.sun.com/jsf/core"      
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:custom="http://java.sun.com/jsf/composite/components">
<h:form id="form">
<p:panelGrid 
id="pgid"
columns="2">
    <h:outputText value="title"/>
    <h:outputText value="#{bean.value}"/>   
</p:panelGrid>

<custom:thing 
via="#{bean.via1}"
viaListener="#{bean.via2Listener()}"        
vias="#{bean.vias1}">
</h:form>

thing.xhtml

<p:selectOneMenu                    
            process="@this"
            value="#{cc.attrs.via}">
                <p:ajax
                listener="#{cc.attrs.viaListener}"
                update="form:pgid"
                />
                <f:selectItems value="#{cc.attrs.vias}"/>
            </p:selectOneMenu>      

面孔无法找到形式:pgid。尝试使用和不使用“形式”。感谢

1 个答案:

答案 0 :(得分:1)

相对于父:组件搜索相对客户端ID(不以NamingContainer开头),在您的情况下是复合组件本身。所以它在form:pgid

的上下文中寻找<cc:implementation>

您需要在客户端ID前加:(默认的NamingContainer分隔符),使其成为视图根的绝对值。

<p:ajax ... update=":form:pgid" />

另见: