在JSF 2.2中,我有一个自定义复合组件,它包含一个vanilla组件(比如说h:commandLink
)。
是否可以在我的复合组件上添加passthrough attributes并将它们传递回包装组件?
像这样的东西(这是一个例子,不要为它的无用而烦恼):
my:commandLink
声明
<cc:interface>
<cc:attribute name="text" type="java.lang.String" />
</cc:interface>
<cc:implementation>
<h:commandLink a:magicInsertionOfAllThePassThroughAttributes>
#{cc.attrs.text}
</h:commandLink>
</cc:implementation>
使用my:commandLink
:
<my:commandLink text="oh no" a:data-something="…" a:data-otherthing="…" />
答案 0 :(得分:2)
所以,在@Kukeltje评论之后,我设法用自定义复合组件支持类做了一些事情:
MsgBox Split((Columns( 2734 ).Address(,0)),":")(0)
在我的组件中带有@FacesComponent("PassThrough")
public class PassThroughComponent extends Component
{
@Override
public void encodeBegin(FacesContext facesContext) throws IOException
{
super.encodeBegin(facesContext);
findComponent("pass").getPassThroughAttributes().putAll(getPassThroughAttributes());
}
}
的DOM元素,我可以将属性传递给它。
我真的很想知道Primefaces组件如何避免这种情况。
答案 1 :(得分:1)
我认为JSF API缺少一个帮助器。也许类似于“insertPassthroughAttributes”,类似于cc:insertChildren。 也许OmniFaces可以对此进行原型设计,我们可以将其添加到下一个JSF规范中。有人应该创建一个规范问题。