2

我正在开发一个 JSF 2.0 复合组件。我正在尝试创建一个框组件,我需要的 HTML 将被设置为属性。

就像是..

<composite:interface>
    <composite:attribute name="value" />
</composite:interface>
<composite:implementation>
    <table cellpadding="0" cellspacing="0" border="1" width="100%">
        <tr>
            <td></td>
            <td>#{cc.attrs.value}</td>
            <td></td>
        </tr>
    </table>
</composite:implementation>

当我想使用这个组件并将所需的 HTML 传递给属性“value”时,如下所示:

<someDir:boxComp>Hello</someDir:boxComp>

“Hello”不被视为属性值。我怎样才能使节点值作为属性值。?

4

1 回答 1

2

您没有将其作为标签属性传递。您只是在标签正文中将其作为子项传递。在这种情况下,您需要使用<composite:insertChildren />来插入它。所以,而不是

<td>#{cc.attrs.value}</td>

你应该做

<td><composite:insertChildren /></td>

或者,如果您真的想使用#{cc.attrs.value},那么您应该从一开始就将其定义为真正的标签属性,而不是标签主体:

<someDir:boxComp value="Hello" />
于 2011-02-23T12:15:23.673 回答