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
Jsf 2 Primefaces数据表p:rowEditor如何检索编辑状态?_Jsf 2_Primefaces_Datatable - Fatal编程技术网

Jsf 2 Primefaces数据表p:rowEditor如何检索编辑状态?

Jsf 2 Primefaces数据表p:rowEditor如何检索编辑状态?,jsf-2,primefaces,datatable,Jsf 2,Primefaces,Datatable,PF 3.5.10、Mojarra 2.1.21、JBoss 7.1.1、PE 7.1、Omnifaces 1.5 我想在p:对话框中使用datatable行编辑。 我有一个数据表,在对话框中有一行编辑。(展柜:) 如果单击对话框上的“确定”,则应保存更改,如果单击“取消”,则更改将被取消。如果激活了行的行编辑,并且我可以更改行中的值,然后在对话框上单击“确定”,则行中的活动更改将丢失。 如何检索编辑的实际状态?如何知道数据表中的行当前是否已编辑?如果我知道,我可以警告用户更改将丢失 编辑:链接

PF 3.5.10、Mojarra 2.1.21、JBoss 7.1.1、PE 7.1、Omnifaces 1.5

我想在p:对话框中使用datatable行编辑。 我有一个数据表,在对话框中有一行编辑。(展柜:) 如果单击对话框上的“确定”,则应保存更改,如果单击“取消”,则更改将被取消。如果激活了行的行编辑,并且我可以更改行中的值,然后在对话框上单击“确定”,则行中的活动更改将丢失。 如何检索编辑的实际状态?如何知道数据表中的行当前是否已编辑?如果我知道,我可以警告用户更改将丢失

编辑:链接到PF源



编辑:我接受了答案,因为我自己实现了所需的功能

要么将组件绑定到支持bean,要么编写自己的按钮触发编辑模式,该模式还将在支持bean中设置一个标志,您可以使用该标志确定编辑状态


绑定组件可能是更容易的选择…

绑定组件是什么意思?我尝试绑定“DataTable”和“RowEditor”组件。DataTable具有isEditingRow()-方法,此方法始终返回false。我在RowEditor组件中还没有发现任何有趣的方法。有没有什么方法我错过了?你可能有一个阶段相关的问题。当您单击“确定”时,它将处理表单,可能还有编辑的行。调用isEditingRow()时,编辑已经完成,组件已经重置。你是在对按钮做部分检查吗?我更新了答案。我在commandButton上使用默认的部分提交值,该值为false。如果我在PF Sources中搜索isEditingRow(),它将在DataTableRenderer类中仅使用一次。我不确定该方法是什么。命令按钮有
process=“@form”
,这意味着部分提交将处理表单中的所有内容。您需要的是
process=“@this”
(可能也用于更新),它不会影响行编辑器。现在看看在
myBean.listener()
中,您是否得到了与
.isEditingRow()
不同的结果,我已经尝试了您的建议,将process=“@form”替换为process=“@this”,不幸的是,这没有帮助。
<p:dialog>
  <h:form>
     <p:tabView cache="false" id=.. binding=..>
         <p:tab>
            <p:dataTable binding=.. id=... widgetVar=... var=.. >
            </p:dataTable>
         </p:tab>
     </p:tabView>
         <p:commandButton process="@form" action="myBean.listener()" value="OK" update="@form"
           onstart="anotherTable.filter()" />

  </h:form>
</p:dialog>