2011-02-23 85 views
2

我正在开发一个JSF 2.0复合组件。我正在尝试创建一个盒子组件,我的所需HTML将设置为属性。如何传递节点值作为JSF 2.0中复合组件的属性

有些东西一样..

<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属性“值”,就像这样:

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

的“你好”是不作为属性值。 我如何使节点值作为属性值。

回答

2

您没有将它作为标签属性传递。你只是将它作为孩子在标签主体中传递。在这种情况下,您需要使用<composite:insertChildren />来插入它。所以,相反的

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

你应该做

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

或者如果你实际上要使用#{cc.attrs.value},那么你应该将其定义为一个真正标签属性从开始而不是作为标签主体:

<someDir:boxComp value="Hello" />