我有一个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对话框时,它知道要查询的对象。处理这种确切情况的复杂方法是什么?不幸的是,我不能也不允许改变这些要求 - 我已经尝试过,但我们的客户不想听到不同的方法。
答案 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}