0

这是我的实体类

 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>

我怎样才能将枚举的文本值放在 ??!? .. 任何的想法?尝试了一些方法,但没有任何工作..

4

3 回答 3

2

不能直接做。您必须编写一些代码来将枚举转换为字符串 - 也许将其添加到实体类中:

@Transient
public String getTypeName() {
    return unitType.get(getType());
}
于 2010-06-13T16:10:46.700 回答
1

最简单的方法是覆盖枚举中的 toString 并将 ${unit.type} 放入 JSP 中。

另一种方法是设置一个 EL 函数,该函数接受 UnitType 并返回映射中的值。

于 2010-06-13T16:07:39.173 回答
1

为地图添加一个 getter,unitType以便您可以按如下方式访问它:

${unit.unitType[unit.type]}

然而,这是否有效取决于所使用的 EL 实现。在 JSP 2.1 EL (Java EE 5) 上,这应该不会带来任何麻烦。

于 2010-06-13T23:47:42.337 回答