2012-04-09 54 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