2010-06-13 65 views
0

這裏是我的實體類從jsp EL調用HashMap?

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; 

在我的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> 

我怎樣才能把枚舉的文本值在??!? .. 任何想法? 嘗試了一些方法,但沒有任何工作..

回答

2

不能直接完成。你必須編寫一些代碼來枚舉轉換爲字符串 - 也許這添加到實體類:

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

是這種良好的做法? – GorillaApe 2010-06-13 16:12:30

+0

其實,我也這樣做了,但忘了它。 ,這並不理想,但它確實有效並且很容易。 – 2010-06-13 16:17:21

1

最簡單的方法是在枚舉中重寫toString,並將$ {unit.type}放在JSP中。

另一種方法是設置一個EL函數,它接受UnitType並返回地圖中的值。

+0

沒有運氣:(我ovverided的toString()方法,但沒有...它不斷返回常量值 – GorillaApe 2010-06-13 16:11:57

1

添加一個getter爲unitType地圖,讓您可以通過以下方式訪問它:

${unit.unitType[unit.type]} 

但是這是否工作取決於所使用的EL實現。在JSP 2.1 EL(Java EE 5)上,這不應該帶來任何麻煩。