【问题标题】:Update confirmDialog on primefaces更新primefaces上的confirmDialog
【发布时间】:2012-01-25 18:52:20
【问题描述】:

这是我的场景,我有一个填充了客户端的数据表,其中有一列带有用于删除该行的按钮。当我点击显示confirmDialog的按钮时,这个confirmDialog的“message”属性绑定到支持bean上的客户端名称。

我尝试了两种方法来使用所选行的名称更新 confirmDialog:

  1. 当我选择更新确认对话框的行时,问题是有时更新时间比单击删除按钮所需的时间大,这意味着更新仅在confirmDialog 已经打开,primefaces 上有一个错误,如果您更新打开的对话框,它会关闭。

  2. 单击删除按钮后更新confirmDialog,如果我在单击按钮之前选择了行,它会起作用,但如果我直接单击按钮而不选择行,它会更新为而是上一个选定的行。

谁能想到另一种策略来实现这一目标?

我想到的一件事是只在选择行时显示删除按钮,这样第二种方法就可以了。但我不知道该怎么做。

【问题讨论】:

    标签: primefaces


    【解决方案1】:

    我大多数时候这样做的方式是分两步进行编辑或删除。当有人单击删除按钮时,您确切地知道来自哪一行并保存该信息。在对话框中你只需要调用 delete 方法并删除之前保存的对象即可。

    让我给你一个关于汽车的简短例子。首先,在您的表格中,您调用一个方法将当前选定的对象保存到“currentCar”中,当然还可以打开对话框。

    <p:commandButton icon="ui-icon ui-icon-close"
       action="#{carBean.prepareRemoveCar(var)}"
       oncomplete="dlg_confirmDeleteCar.show();" />
    

    在您的对话框中,您只需调用方法public void deleteCar() 并删除“currentCar”

    public class CarBean implements Serializable {
        ...
        private Car currentCar;
        ...
        public void prepareDeleteCar(Car currentSelectedCar){
            currentCar = currentSelectedCar;
        }
    
        public void deleteCar(){
            //delete currentCar
        }
        ...
    }
    

    如果您采用这种方法,则表中当前选定的行对删除无关紧要。您可以单击任何删除按钮,并且将始终删除该行/对象,无论选择如何。

    您当然也可以将其用于其他情况,例如更新您的实例,或创建一个新实例(在这种情况下,您可以使用“prepareMethod”来设置currentCar=new Car();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-16
      • 1970-01-01
      • 2020-06-18
      • 1970-01-01
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多