Composite内部的组件引用其他组件内的另一个组件

时间:2014-09-12 13:42:37

标签: jsf jsf-2 composite-component

我创建了一个Composite Component来模拟Primefaces's Column,而不是渲染到组件,它的渲染为(我还创建了其他组件来模拟Primefaces的PanelGridRow到使用DIV代替Table和TR)。代码如下:

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui" 
    xmlns:cc="http://java.sun.com/jsf/composite">
<cc:interface>
    <cc:attribute name="id" type="java.lang.String" required="false"/>
    <cc:attribute name="span" type="java.lang.Integer" required="false" default="1" />
</cc:interface>
<cc:implementation>
    <p:outputPanel id="#{cc.attrs.id}" layout="block"
        styleClass="ui-grid-col-#{cc.attrs.span}">
        <cc:insertChildren />
    </p:outputPanel>
</cc:implementation>
</html>

当我使用outputLabel将组件引用到外部组件时,我的问题就出现了:

<ipem:column span="2">
    <p:outputLabel value="#{msg['precadastro.titulo.nome_fantasia']}" for="fantasia"/>
</ipem:column>
<ipem:column span="10">
    <p:inputText id="fantasia" size="80" maxlength="100"
        value="#{preCadastroMB.preCadastro.nomeFantasia}" />
</ipem:column>

当我写这篇文章时,我收到了消息Cannot find component with identifier "fantasia" referenced from "painelCadastro:j_idt80:j_idt82:j_idt84".我需要删除outputLabel中的for属性。

我在StackOverflow中发现了一些我怀疑的问题。例如,在How to make a grid of JSF composite component?中,我们在父页面中有一个outputLabel,它引用了复合内部的一个组件。但是,就我而言,标签为inputText都在其自己的复合内。在How to create a composite component for a datatable column?中,label和inputText都在同一个合成中。

我们没有这个问题Column的Primefaces。他们如何管理这个?

谢谢,

Rafael Afonso

0 个答案:

没有答案