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();
}
}
也許我錯了,但我想用枚舉值的名稱JPA地圖枚舉並不像他想 – 2012-04-09 20:50:14
據我瞭解的屬性,他要地圖枚舉名稱。這就是爲什麼這個名字在jsp中顯示的原因。 – Bozho 2012-04-09 20:53:23
不幸的是,我們無法讓JPA正確保存我們的數據,因此我們現在正在手動編寫它的保存部分。 – Webnet 2012-04-10 14:33:58