如何在<p:datalist> </p:datalist> </p:commandlink> </cc:clientbehavior>中将<cc:clientbehavior targets =“”>设置为<p:commandlink>

时间:2014-08-19 08:08:43

标签: jsf jsf-2 composite-component

我遇到了JSF复合cc:clientBehavior的目标属性的问题。

主要问题是:

我应该写什么行为“目标”来处理所有列表元素?

我的示例代码:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:cc="http://xmlns.jcp.org/jsf/composite"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:p="http://primefaces.org/ui">
<cc:interface>
    <cc:attribute name="items" />
    <cc:clientBehavior name="itemClick" targets="???" event="click" />
</cc:interface>

<cc:implementation>
    <!-- or ui:repeat or c:forEach... -->
    <p:dataList id="itemList" value="#{cc.attrs.items}" var="item">
            <p:outputLabel value="#{item.id}" />
            <p:commandLink id="itemLink" value="view details" >
                <f:attribute name="clicked" value="#{item.id}" />
            </p:commandLink>
    </p:dataList>
</cc:implementation>

1 个答案:

答案 0 :(得分:1)

只需使用指向<p:commandLink>

的复合组件实现相对客户端ID
<cc:clientBehavior name="itemClick" targets="itemList:itemLink" event="click" />

请注意,这不适用于<c:forEach>。另请参阅JSTL in JSF2 Facelets... makes sense?