2012-03-29 12 views
0

Ich versuche, das folgende ENUM in meinem Bearbeitungsinhalt .jsp mit dem Tag <form:select> zu verwenden und kann kein Beispiel dafür finden.So verwenden Sie Java ENUM mit <form:select>

public class Content implements Serializable { 
    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; 
     } 
    } 
.... 

Der obige Inhaltsobjekt wird als ${content} meine .jsp-Datei übergeben.

Ich versuche

<form:select path="content.Paperless"> 
    <form:options items="${content.Paperless}" itemLabel="name"/> 
</form:select> 

Es wirft eine Ausnahme zu tun .... org.springframework.beans.NotReadablePropertyException: Invalid property 'content' of bean class [com.fettergroup.cmt.model.Content]: Bean property 'content' is not readable or has an invalid getter method: Does the return type of the getter match the parameter

Ich bin Missverständnis darüber etwas, aber ich kann nicht genau feststellen, welche ein ...

+0

Was ist ein 'Liste getPaperlessOptions()' Methode in 'Content'? Dann müssten Sie 'items =" $ {content.paperlessOptions} "' auf Ihrer Seite schreiben. – Thomas

+0

Haben Sie Tags verwendet? –

Antwort

6

Ihr <form:select> Pfad bezieht sich auf einen Getter mit dem Namen getContent(), der ein Objekt zurückgibt, das get getPaperless() hat. Vielleicht wollten Sie nur getPaperless() in Ihrer Action Model-Klasse verwenden.

Dann Liste der ENUM-Werte zeigen Sie nur eine leere Optionen Tag erklären müssen:

<form:select path="paperless"> 
    <form:options/> 
</form:select> 
+0

Leider funktioniert das nicht: - Ich bekomme den gleichen Fehler wie oben beschrieben – Webnet

+0

ich sehe. Könnten Sie Ihre Erklärung posten? –

+0

'' – Webnet

0

Glauben Sie, wenn Sie Paperless.values ​​() als Objekt an Ihre JSP-Seite übergeben, dann den Namen und die Beschreibung dereferenzieren, erhalten Sie die gewünschten Ergebnisse.

0

Sie müssen Enum Sammlung konvertieren und setzen zu modellieren. dann verwenden Sie es in Form: Wählen Sie wie eine beliebige Liste. Beispielcode:

in Ihrem Controller

model.addAttribute ("paperless", Arrays.asList(Paperless .values())); 

in Ihrem jsp

<form:select ... items="${paperless}" itemValue="name" itemLabel="description"/>