具有多个和单个选择的DataTable

时间:2014-11-15 07:31:00

标签: primefaces datatable jsf-2.2

我有一个DataTable,它显示有关可执行应用程序的信息。我有以下要求:   - 通过从DataTable中选择N行来执行N个应用程序。   - 单击DataTable最后一列中的“更新/删除”按钮,修改单个应用程序的信息。 我可以做第一个或第二个但是很难做到这两个。

<ui:include src="/dialogs/readTestcase.xhtml" />
...
<p:dataTable id="Testcase_DT" 
             var="Testcase" 
             value="#{testcaseProvider.testcases}" 
             rowKey="#{Testcase.testcaseId}" 
             selection="#{testcaseProvider.selectedTestcases}">

    <p:column selectionMode="multiple"
              style="width: 15px; text-align: center;" />

    <p:column headerText="Actions">
        <p:commandButton id="UpdateTestcase_BTN"
                         value="Update"
                         oncomplete="PF('READ_TESTCASE').show();"
                         update=":ReadTestcase_DLG"
                         style="width: 100px; text-align: center;" />
    </p:column>

对,所以我的问题。我有多个选择,但为了更新模型信息,我需要一个选择,所以当我打开READ_TESTCASE对话框时,它知道要查询的对象。处理这种确切情况的复杂方法是​​什么?不幸的是,我不能也不允许改变这些要求 - 我已经尝试过,但我们的客户不想听到不同的方法。

1 个答案:

答案 0 :(得分:0)

它不应该变硬,你已经有了多个选择语义,所以你模型中所有选定的行。要将单行添加到模型中,而不破坏已有的行,请将propertyListener添加到命令按钮

                 <p:commandButton id="UpdateTestcase_BTN"
                                     value="Update"
                                     oncomplete="PF('READ_TESTCASE').show();"
                                     update=":form:display"
                                     style="width: 100px; text-align: center;" >
                        <f:setPropertyActionListener value="#{Testcase}" target="#{testcaseProvider.selectedTestcase}" />
                    </p:commandButton>

当然要确保你的支持bean中有一个selectedTestcase属性,带有getter和setter。通过引用#{testcaseProvider.selectedTestcase}

,您的对话框中将显示单行