2012-04-09 33 views
0

我是ENUM的新手,所以我想确保在我对模型执行一点小小的手术之前,我正在做所有这些。我的ENUM有一个较短的字符串,存储在数据库中,被称为name,以及用户看到的description。我的目标是获取内容对象的描述以显示在页面上。根据值在Java中获取ENUM描述

当然

<td valign='top'><strong>Paperless:</strong> ${content.getPaperless()}</td> 

不会这么做,因为这只会显示EDELIVERY_REQUIRED。我该如何调整它才能正常工作?

我的编辑页面的伟大工程:

<td valign='top'> 
     <strong>Go Paperless Messaging</strong><br/> 
     <form:select path="paperless"> 
      <form:options items="${paperlessEnumValues}" itemValue="name" itemLabel="description"/> 
     </form:select> 
    </td> 

我的枚举:

public enum Paperless { 
    NONE(null, ""), 
    EDELIVERY_RECOMMENDED("EDELIVERY_RECOMMENDED", "Recommend eDelivery"), 
    EDELIVERY_REQUIRED("EDELIVERY_REQUIRED", "Require eDelivery"), 
    EDELIVERY_REQUIRED_JUSTIFICATION("EDELIVERY_REQUIRED_JUSTIFICATION", "Require eDelivery w/out justification"); 

    private String name; 
    private String description; 
    Paperless(String name, String description) { 
     this.name = name; 
     this.description = description; 
    } 
    public String getName() { 
     return this.name; 
    } 
    public String getDescription() { 
     return this.description; 
    } 
} 

我的模型

public class Content implements Serializable { 
... 

    @Basic(optional = false) 
    @NotNull 
    @Size(min = 1, max = 255) 
    @Column(name = "paperless") 
    private String paperless; 
... 
    public String getPaperless() { 
     return paperless; 
    } 

    public void setPaperless(String paperless) { 
     this.paperless = paperless; 
    } 

我的内容服务

private List<Content> findContentEntities(boolean all, int maxResults, int firstResult) { 
    try { 
     CriteriaQuery cq = em.getCriteriaBuilder().createQuery(); 
     cq.select(cq.from(Content.class)); 
     Query q = em.createQuery(cq); 
     if (!all) { 
      q.setMaxResults(maxResults); 
      q.setFirstResult(firstResult); 
     } 
     return q.getResultList(); 
    } finally { 
     em.close(); 
    } 
} 

回答

3
  1. 地图private Paperless paperless在你的实体,而不是一个字符串。 JPA支持枚举映射
  2. 使用${content.paperless.description}
+0

也许我错了,但我想用枚举值的名称JPA地图枚举并不像他想 – 2012-04-09 20:50:14

+0

据我了解的属性,他要地图枚举名称。这就是为什么这个名字在jsp中显示的原因。 – Bozho 2012-04-09 20:53:23

+0

不幸的是,我们无法让JPA正确保存我们的数据,因此我们现在正在手动编写它的保存部分。 – Webnet 2012-04-10 14:33:58