2010-06-13 5 views
0

Voici mon entité classeAppelez HashMap de jsp EL?

public enum UnitType { 

    HOSPITAL, HEALTHCENTER 
} 
public static LinkedHashMap<UnitType, String> unitType = new LinkedHashMap<UnitType, String>() { 
    { 
     put(UnitType.HEALTHCENTER, "Κέντρο Υγείας"); 
     put(UnitType.HOSPITAL, "Νοσοκομείο"); 
    } 
}; 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Long id; 
    private String name; 
    private String address; 
    @Column(columnDefinition = "TEXT") 
    private String info; 
    @Enumerated(EnumType.STRING) 
    private UnitType type; 

A mon jsp

     <c:forEach var="unit" items="${requestScope.units}"> 
         <tr> 
          <td>${unit.id}</td> 
          <td>${unit.name}</td> 
          <td>${unit.address}</td> 
          <td>??!?</td> 
          <td><a href="#">Περισσότερα</a></td> 
         </tr> 
        </c:forEach> 

Comment puis-je placer la valeur de texte de la ENUM ??!? .. Une idée? Essayé de diverses façons, mais rien n'a fonctionné ..

Répondre

2

Ne peut pas être fait directement. Vous devez écrire un code pour traduire le ENUM à une chaîne - peut-être ajouter ceci à la classe d'entité:

@Transient 
public String getTypeName() { 
    return unitType.get(getType()); 
} 
+0

est-ce une bonne pratique? – GorillaApe

+0

En fait, j'ai aussi fait ça mais je l'ai oublié. Ce n'est pas idéal, mais ça fonctionne et c'est facile. –

1

Le moyen le plus simple serait de surcharger toString dans l'énumération et de mettre simplement $ {unit.type} dans la JSP.

Une alternative consiste à configurer une fonction EL qui accepte un UnitType et renvoie la valeur dans la carte.

+0

pas de chance :(j'ai surchargé la méthode toString() mais rien ... il ne cesse de retourner la valeur constante – GorillaApe

1

Ajouter un getter pour la carte unitType afin que vous puissiez accéder comme suit:

${unit.unitType[unit.type]} 

Le fait que cela fonctionne dépend toutefois de l'implémentation EL utilisée. Sur JSP 2.1 EL (Java EE 5) cela ne devrait pas poser de problème.

Questions connexes