2010-06-23 8 views
1

J'essaie d'ajouter des en-têtes triables à un h: dataTable. J'essaye de suivre http://balusc.blogspot.com/2006/06/using-datatables.html pour faire ceci. Ce qui suit rend un lien mais ne fait rien.JSF 2.0 En-têtes triables avec h: datable

list.xhtml 
       <h:dataTable value="#{iptableController.items}" var="item" border="0" cellpadding="2" cellspacing="0" rowClasses="jsfcrud_odd_row,jsfcrud_even_row" rules="all" style="border:solid 1px"> 

        <h:column> 
         <f:facet name="header"> 
          <h:commandLink actionListener="#{iptableController.sortDataList}"> 
           <f:attribute name="sortField" value="getID"/> 
           <h:outputText value="#{bundle.ListIptableTitle_iptableId}"/> 
          </h:commandLink> 
         </f:facet> 
         <h:outputText value="#{item.iptableId}"/> 
        </h:column> 

Voici la partie du contrôleur que j'essaie d'utiliser.

iptableController 

public void sortDataList(ActionEvent event) { 
    String sortFieldAttribute = getAttribute(event, "sortField"); 

    // Get and set sort field and sort order. 
    if (sortField != null && sortField.equals(sortFieldAttribute)) { 
     sortAscending = !sortAscending; 
    } else { 
     sortField = sortFieldAttribute; 
     sortAscending = true; 
    } 

    // Sort results. 
    if (sortField != null) { 
     Collections.sort(getFacade().findAll(), new DTOComparator(sortField, sortAscending)); 
    } 
} 

Le partenaire DTOCom est identique à celui du lien. J'ai l'impression d'avoir complètement fait fausse route, mais j'ai été incapable de trouver un meilleur guide. Toute aide serait appréciée.

EDIT:

Je me suis retourné sur le filtrage plus fin et a pu voir un problème. Je ne suis pas sûr de ce qui l'a causé, mais il semble que le contrôleur a été ajouté deux fois et a été alloué au paquet <error>.. J'ai renommé le fichier et cela a été résolu. Après avoir nettoyé quelques autres questions (appeler des fonctions non Existant etc) Je suis coincé avec l'erreur:

SEVERE: JSF1073: javax.faces.event.AbortProcessingException caught during processing of INVOKE_APPLICATION 5 : UIComponent-ClientId=j_idt12:j_idt22, Message=/iptable/List.xhtml @26,88 actionListener="#{Controller.sortList}": java.lang.RuntimeException: Cannot compare test, test with t, test1 on [getiptableID] 
SEVERE: /iptable/List.xhtml @26,88 actionListener="#{Controller.sortList}": java.lang.RuntimeException: Cannot compare test, test with t, test1 on [getiptableID] 

le commentaire dans DTOComparator indique que: // Si cette exception se produit, il est généralement un défaut du développeur DTO.

mes getters tous ressemblent:

public String getIptableName() { 
    return iptableName; 
} 

Répondre

1

The following renders a link but it doesn't do anything.

Une cause commune est que cela n'a pas été placé à l'intérieur d'un <h:form>. Sans cela, le client ne peut rien soumettre au serveur. Placez le <h:dataTable> à l'intérieur d'un <h:form> et cela devrait fonctionner.

Si ce n'est pas la cause, vérifiez this answer pour obtenir une liste des autres causes possibles.


Mise à jour selon votre mise à jour:

Cannot compare test, test with t, test1 on [getiptableID] 

Cela signifie qu'il n'y a pas getter avec le nom getiptableID. Ne devrait-il pas être getIptableID?

+0

Merci pour votre réponse rapide. Le fichier list.xhtml a une forme définie: . J'ai vérifié 1-3 dans le lien que vous avez fourni et je suis à peu près sûr que cela ne se produit pas. Je ne sais pas trop comment vérifier 4-7. Voici le fichier complet: http://pastebin.com/S4hpS1Gg et le contrôleur complet: http://pastebin.com/Kz6T3UZE entité complète: http://pastebin.com/6tN93Dui – duallain

+1

Ensuite, il devrait avoir fait * quelque chose *. Le serveur a-t-il déjà été touché? Quelles phases du cycle de vie JSF ont été traitées? – BalusC

+0

J'ai ajouté plus d'informations ci-dessus. Il frappait le serveur, il ne faisait rien de visible pour moi. – duallain