Domanda

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

Questo è un estratto da una jsp che sto cercando di modificare.

Risultati è un List<Object> restituiti nel ModelAndView dal controller, di cui ciascuna ha una Object getUglyDisplayName e getPhonenum. Io non sono in realtà chiaro su come che sta lavorando. Credo che il jsp sta facendo un po 'di getClass().getName() o qualcosa dietro le quinte? Eventuali indicazioni su quel processo sarebbe stato illuminante. In ogni caso, che parte sta lavorando.

Nel controllore ho aggiunto un altro oggetto deve essere restituito nel ModelAndView. E 'un HashMap che ha nomi visualizzati più bello per i quali i nomi visualizzati brutte sono le chiavi. Quindi voglio sostituire quel primo td con qualcosa di simile:

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

Questo non funziona, ovviamente, altrimenti non sarebbe stato distacco qui. Sono andato avanti e impostare un var al nome ho messo il HashMap nella ModelAndView sotto (riga superiore), ma non sono sicuro se questo è il modo giusto per arrivare a tale oggetto.

È stato utile?

Soluzione

Per la prima parte ( "ciò che JSP sta facendo") vedere la JSP Expression Language .

Per la seconda parte, provare:

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

Non vorrei giurare che funzionerà (è da molto tempo che ho usato JSP) ma vale la pena di provare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top