Frage

Ich habe ein Objekt Befehl besteht aus primitiven Feldern und einem Objektfeld. Wie binde ich meine Formularfelder auf die Felder im Objekt?

Ich habe versucht, dies zu tun, aber ohne Erfolg

<form:form commandName="course" method="POST">
     <form:input path="activity.activity"/>
         .
         .
         .
</form:form>

Ich bekomme diese Fehlermeldung

org.springframework.beans.NotReadablePropertyException: 
      Invalid property 'course' of bean class

My Command Klasse wie folgt ist

public class Course {
    private long id;
    private String owner;
    private String title;
    private List<LearningActivity> activity = new ArrayList<LearningActivity>();

    //getters and setters
}

public class LearningActivity {
private long ID;
private String activity;
    private String link;

    //getters and setters
}
War es hilfreich?

Lösung

Ihre Liste muss entweder mit so vielen LearningActivity Objekten vorgefüllt wird, wie Sie (mit Aktivität [0], Aktivität [1], etc.) zu beziehen planen oder es muss eine faule Liste. Eine faule Liste ist eine Liste, die sich mit leeren Objekten bevölkern werden, wenn ein bestimmte Index referenziert wird.

Ein Kommentar zeigt an, dass Sie Apache Commons LazyList sind versucht, zu verwenden, die funktionieren sollte - sind Sie eine Importrichtlinie fehlt? Doch als Alternative gibt es eine Quelle faul Liste Implementierung genannt AutoPopulatingList.

Andere Tipps

Zwei mögliche Probleme hier:

  1. activity.activity ungültig ist (es sei denn, Ihr Getter auf Ihre Mitgliedsvariablen entsprechen nicht), weil Course.activity eine Liste ist. Sie benötigen ein bestimmtes Listenelement zu adressieren - z.B. activity[0].activity. Sie müssen auch sicherstellen, dass es tatsächlich existiert.

  2. Haben Sie Ihre FormController richtig konfiguriert? Hindurchgeht es Course Instanz zu betrachten, wie es sollte? Schauen Sie sich auf Spring MVC Tutorial für ein Beispiel.

Wenn Sie nach behoben haben # 1 und # 2 bestätigt, dass es richtig gemacht wird der Fehler nicht weggeht, bitte weitere Informationen veröffentlichen (FormController Kartierungs- / Quelle).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top