p:ajax事件colReorder问题

时间:2017-09-29 13:49:22

标签: jsf primefaces

p:dataTable内部我有一些ajax事件,当我编辑某些内容时会显示FacesMessages

<p:ajax event="cellEdit" listener="#{userRegistrationController.cellEditAction}"
                            update=":currentUserForm:currentUsersFormMessages"/>
<p:ajax event="colResize" listener="#{userRegistrationController.colResizeAction}"
                            update=":currentUserForm:currentUsersFormMessages"/>
<p:ajax event="colReorder"  listener="#{userRegistrationController.colReorderAction}"
                            update=":currentUserForm:currentUsersFormMessages"/>

唯一不起作用的是“colReorder”,当我调用方法时我有 javax.el.MethodNotFoundException:找不到方法:com.mycompany.primeautosales.jsf.UserRegistrationController@476d042d.colReorderAction( javax.faces.event.AjaxBehaviorEvent)。 以下是方法colResizeActioncolReorderAction,我不知道为什么一个工作而另一个工作没有。

public void colResizeAction(ColumnResizeEvent event){
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(
            "the width of column "+event.getColumn()+" is now "+event.getWidth()
    ));
}

public void colReorderAction(ReorderEvent event){
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(
            "reordered "+event.getComponent().toString()));
}

ReorderEvent班级有问题吗?

2 个答案:

答案 0 :(得分:1)

尝试将bean Action参数更改为动作行为,如下面的代码

public void onReorder(AjaxBehaviorEvent event) {
 DataTable dataTable = (DataTable) event.getComponent();
 List<UIColumn> columns = dataTable.getColumns();

 //build new column order to store  
 for(UIColumn : column columns)
 {
  //read column names
 }
//store list to db
}

供参考Click here

答案 1 :(得分:0)

问题是ajax事件“colReorder”不支持监听器参数org.primefaces.event.ReorderEvent。这就是你有这个错误的原因!正如上面提到的@Araf,colReorder事件支持AjaxBehaviorEvent事件。