更新primefaces上的confirmDialog

时间:2012-01-25 18:52:21

标签: primefaces

这是我的场景,我有一个填充了客户端的dataTable,其中有一个列,其中包含一个用于删除行的按钮。当我点击按钮时会显示confirmDialog,这个confirmDialog的“message”属性绑定到辅助bean上的客户端名称。

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

  1. 当我选择行更新confirmDialog时,问题在于有时更新时间比点击删除按钮所花费的时间更长,这意味着更新只发生在confirmDialog已经打开,并且如果你更新一个打开的对话框,那么关键字会出现错误。

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

  3. 任何人都可以考虑另一种策略来实现这一目标吗?

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

1 个答案:

答案 0 :(得分:1)

我大部分时间这样做的方法是分2步进行编辑或删除。当有人点击删除按钮时,您确切知道来自哪一行并保存该信息。在对话框中,您只需调用delete方法并删除之前保存的对象。

让我举几个汽车的例子。首先,在表中调用一个方法将当前选定的Object保存到“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();

相关问题