在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)。
以下是方法colResizeAction
和colReorderAction
,我不知道为什么一个工作而另一个工作没有。
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
班级有问题吗?
答案 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事件。