Question

<c:set var="nameLookup" value="${names}" />
<c:forEach var="result" items="${results}">
    <tr>        
        <td>${result.uglyDisplayName}</td>
        <td>${result.phonenum}</td>
    </tr>
</c:forEach>

Ceci est un extrait d'un jsp que je suis en train de modifier.

Résultats est un List<Object> à retourner dans le ModelAndView à partir du contrôleur, dont chacun a une Object getUglyDisplayName et getPhonenum. Je ne suis pas vraiment clair sur la façon dont fonctionne. Je suppose que le jsp fait une getClass().getName() ou quelque chose dans les coulisses? Tous les pointeurs sur ce processus serait instructif. Quoi qu'il en soit, cette partie fonctionne.

Dans le contrôleur, j'ai ajouté un autre objet à retourner dans le ModelAndView. Il est un HashMap qui a plus agréables noms d'affichage pour lequel les noms d'affichage laids sont les clés. Je tiens donc à remplacer ce premier td avec quelque chose comme ceci:

<td>${nameLookup.get(result.uglyDisplayName)}</td>

Cela ne fonctionne pas, évidemment, ou je ne serais pas de poster ici. Je suis allé de l'avant et mis un var au nom que je mets le HashMap dans le ModelAndView sous (première ligne) mais je ne suis pas sûr que ce soit la bonne façon de faire à cet objet.

Était-ce utile?

La solution

Pour la première partie ( "ce que JSP fait") voir le JSP expression Language .

Pour la deuxième partie, essayez:

<td>${nameLookup[result.uglyDisplayName]}</td>

Je ne voudrais pas jurent ça va marcher (il y a longtemps que je l'ai utilisé JSP), mais il vaut la peine d'essayer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top