2017-09-29 2 views
0

l'intérieur d'un p:dataTable j'ai quelques événements ajax qui affichent FacesMessages quand je modifier quelque choseProblème avec p: événement ajax colReorder

<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"/> 

Le seul qui ne fonctionne pas est le « colReorder » un, quand je l'appelle la méthode J'ai javax.el.MethodNotFoundException: méthode introuvable: [email protected]042d.colReorderAction (javax.faces.event.AjaxBehaviorEvent). Voici les méthodes colResizeAction et colReorderAction, je ne comprends pas pourquoi un travail et l'autre ne fonctionne pas.

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())); 
} 

Y at-il quelque chose de mal avec la classe ReorderEvent?

Répondre

1

Essayez avec le paramètre Action haricot ty changement au comportement de l'action comme ci-dessous le code

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 
} 

pour référence Click here

0

Le problème est que l'événement ajax « colReorder » ne supporte pas l'org paramètre auditeur. primefaces.event.ReorderEvent. C'est pourquoi vous avez cette erreur! Comme le @Araf mentionné ci-dessus, l'événement AjaxBehaviorEvent est pris en charge par l'événement colReorder.