使用Composite JSF和DataTable的问题

时间:2014-03-02 14:41:30

标签: jsf jsf-2 primefaces composite-component

好吧,我开始使用Composite JSF 2.0,我遇到了以下问题。

这是我的复合词:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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:composite="http://java.sun.com/jsf/composite">

<composite:interface>

</composite:interface>

<composite:implementation>
    <p:ajax event="rowSelect" update="@form" />
    <p:ajax event="rowUnselect" update="@form" />
</composite:implementation>

</html>

我正试图以这种方式使用这种复合材料:

<p:dataTable rowKey="#{cartao.id}" var="cartao"
                    value="#{cartaoCreditoMB.beans}" paginator="true"
                    emptyMessage="Não foi encontrado nenhum registro" rows="10"
                    id="dataTableCartoesCredito" selection="#{cartaoCreditoMB.bean}"
                    selectionMode="single">

                    <application:rowSelectUnSelect />
 </p:dataTable>

但是我收到了以下错误:

/resources/application/rowSelectUnSelect.xhtml @14,45 <p:ajax> Unable to attach <p:ajax> to non-ClientBehaviorHolder parent

1 个答案:

答案 0 :(得分:1)

这两行:

<p:ajax event="rowSelect" update="@form" />
<p:ajax event="rowUnselect" update="@form" />

必须嵌套在实现ClientBehaviourHolder接口的组件中。

可能需要将<p:ajax>嵌套在<p:dataTable>内:

<p:dataTable ...>
   <p:ajax ... /> 
   ...
</p:dataTable>

因为DataTable类确实实现了ClientBehaviourInterface