Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf Primefaces 3.5中的数据表行选择(单个)选择所有行_Jsf_Jsf 2_Primefaces - Fatal编程技术网

Jsf Primefaces 3.5中的数据表行选择(单个)选择所有行

Jsf Primefaces 3.5中的数据表行选择(单个)选择所有行,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我需要在DataTable中添加和删除行,并使用按钮通过单个选择分别添加和删除行 我的html/jsf代码是: <p:dataTable id="creditTable" rowIndexVar="sn" value="#{cpeTrainingMB.cpeTrainingObj.cpeTrainigSchDetail}" var="cpeDetail" scr

我需要在DataTable中添加和删除行,并使用按钮通过单个选择分别添加和删除行

我的html/jsf代码是:

<p:dataTable id="creditTable" rowIndexVar="sn" 
                                value="#{cpeTrainingMB.cpeTrainingObj.cpeTrainigSchDetail}"
                                var="cpeDetail" scrollable="true" scrollHeight="100" 
                                selectionMode="single" 
                                rowKey="#{cpeDetail.id}">

                                <p:ajax event="rowSelect" update=":cpe:creditTable" listener="#{cpeTrainingMB.onRowSelect}"/>

                                    <p:column headerText="Sn">
                                    <h:outputText value="#{sn+1}"></h:outputText>
                                    </p:column>
                                    <p:column headerText="Date">
                                    <h:outputText value="#{cpeDetail.fromDtBS}"></h:outputText> 
                                    </p:column>
                                    <p:column headerText="Credit HR">
                                    <h:outputText value="#{cpeDetail.creditHr}"></h:outputText>
                                    </p:column>
                                </p:dataTable>

dataTable中列出的所有元素在rowKey属性(在本例中为-id字段)中必须具有NOTNULL值。空值将导致问题中描述的行为。指定rowKey的另一种方法是使用自定义方法实现SelectableDataModel
public Object getRowKey(RowClass rc)

您好,是否有人确定添加到dataTable的所有对象都具有非空id?抱歉,我将所有id设置为空。但我的id将在保存到数据库时自动生成。所以,我已经生成了用于选择的id。我想知道,除了对象的字段之外,是否可以有一个行键?就像自动生成的显示序列号一样。我想说的是,它必须是对象的一个字段——至少我从未听说过其他情况。您总是可以实现SelectableDataModel,而不是指定rowKey,但这需要更多的编码。我认为生成ID解决了这个问题?是的,通过生成ID它就解决了。
public void onRowSelect(SelectEvent event){

        cpeScheSelected = null;
        this.cpeScheSelected = (CPETrainingScheduleModel)event.getObject();

        cpeTrainingScheObj = null;

        cpeTrainingScheObj = this.cpeScheSelected;

    }