2010-11-24 4 views
2

Voici le scénario: j'ai quelque chose comme ça ..Spring MVC - Données de référence

<form:select path="somePath" .....> 
    <form:option value="" label="Please Select"/> 
    <form:options items="${students}" itemValue="id" itemLabel="name"/> 
</form:select> 

Cette liste déroulante fonctionne très bien. Mais comment afficher le nom d'un étudiant en particulier? Je veux faire quelque chose comme ceci:

<c:out value="${students[id].name}"/> 

Quelqu'un peut-il m'aider avec la syntaxe?

Merci

+0

Voulez-vous afficher le nom de l'élève en réponse à une sélection dans votre sélection? – DwB

+0

Oui, c'est quelque chose comme ça. En fait, j'affiche tous les élèves comme une grille avec un lien d'édition sur chaque ligne. Donc, quand quelqu'un veut éditer un étudiant particulier (changer le nom), il cliquera sur éditer. Une zone de texte sur la page affiche le nom de cet étudiant particulier, de sorte qu'ils peuvent changer le nom et cliquer sur le bouton de mise à jour. – racharambola

Répondre

2

Je suppose que ${students} est un tableau ou d'une liste d'objets d'étudiants. En tant que tel, il n'est pas indexé par id et ne peut pas être accédé directement de cette façon.

Les options comprennent:

1) Inclure votre collection d'étudiants comme une carte d'identité à l'objet étudiant; votre attribut items devient alors ${students.values}, et vous pouvez ensuite rechercher un étudiant individuel sous la forme ${students[id]}.

2) Ou, gardez-le comme une liste, puis parcourir votre liste et trouver celle où l'ID correspond:

<c:forEach var="student" items="${students}"> 
    <c:if test="${student.id==id}"> 
     <c:out value="${student.name}" /> 
    </c:if> 
</c:forEach> 

3) Ou, enfin, si vous savez dès le début quel étudiant vous veillez à inclure cet élève séparément dans les données de référence.

+0

Merci Jacob., Son travail ... Le $ {students} est une carte qui a la liste des étudiants comme valeurs donc j'ai utilisé la deuxième option. – racharambola