2009-04-22 8 views
2

Je veux appliquer la pagination pour une classe de mon application, dans laquelle j'utilise spring, struts2 & hibernate. Ici, j'appelle classe d'action du fichier welcome.jsp. Il a le code suivant:Pagination à travers Struts2 en utilisant DisplayTag Library Framework

<s:form action="marketing/allCountry.action"> 
     <s:submit value="Click"></s:submit> 
     </s:form> 

Maintenant, ma allCountry.action classe de java a le code suivant:

public String executeAction() throws Exception { 
     try { 
      countryList = new ArrayList<Country>(); 
      countryList = this.countrySecurityProcessor.findByAll(0, null, null, null, null, false, false, null, null, null, null, 0); 
      System.out.println("countryList = "+countryList); 
      return ActionSupport.SUCCESS; 

     } catch (Exception ex) { 
      return ActionSupport.ERROR; 
     } 
} 

Il va chercher les données correctement, que je confirme par l'impression objet CountryList. Mais maintenant je redirige de SUCCESS à country.jsp. Le code de country.jsp est:

<display:table list="countryList" requestURI="CountryAllAction" pagesize="3"> 
    <display:column property="id" title="ID" /> 
    <display:column property="name" /> 
</display:table> 

Maintenant, au moment d'exécuter ma demande je reçois l'erreur de temps comme:

javax.servlet.ServletException: javax.servlet.ServletException: Exception: [ .LookupUtil] Erreur lors de la recherche de la propriété "id" dans le type d'objet "java.lang.String". Cause: Propriété inconnue 'id'

Quelle est la solution à ce type d'erreur?

Répondre

2

Vous devez avoir un getter pour votre countryList dans votre action.

List<Country> countryList = new ArrayList<Country>(); 

public String executeAction() throws Exception { 
    try { 
    countryList = this.countrySecurityProcessor.findByAll(0, null, null, null, null, false, false, null, null, null, null, 0); 
    System.out.println("countryList = "+countryList); 
    return ActionSupport.SUCCESS; 

    } catch (Exception ex) { 
    return ActionSupport.ERROR; 
    } 

} 

public List<Country> getCountryList() { 
    return countryList; 
} 
0

Je ne suis pas familier avec Struts2 mais il semble que DisplayTag ne trouve pas votre countryList dans aucune portée.

Je ne vous vois pas mettre countryList de ou demande. Si je ne me trompe peut-être vous devez spécifier le nom du formulaire comme <display:table list="${yourStrutsFormName.countryList}" ...

0

Vous devez mettre "countryList" à la disposition de DisplayTag, par ex. en faisant quelque chose comme:

 
    request.setAttribute("countryList", countryList); 

dans votre action (sauf si il y a un moyen Struts2 de le faire plus habile). Je pense que vous pouvez obtenir la demande dans votre action en l'implémentant ServletRequestAware

Vous devez également vous assurer que votre classe de pays a des propriétés id et name.

0

Utilisez le code suivant.Au lieu de l'attribut de liste, utilisez l'attribut name.

<display:table name="countryList" requestURI="CountryAllAction" pagesize="3"> 
<display:column property="id" title="ID" /> 
<display:column property="name" /> 
</display:table> 
0

u ne besoin de faire quelque chose il suffit d'utiliser la variable de liste dans l'affichage nom de la balise i.e.

<display:table name="yourListnameinaction"> 

</display> 
Questions connexes