2016-06-22 6 views
1

Wie der Titel beschreibt, zeige ich mit thymeleaf den Inhalt einer Liste an und setze dann "Update" -Schaltflächen neben jedes Element in der Liste, das das bestimmte Objekt an ein Bearbeitungsformular sendet Seite.Objekt aus der Liste nehmen und zu einer anderen Methode übergehen

Hier ist die Controller-Methode der Liste der Listenansicht für das Hinzufügen von:

@RequestMapping("/list") 
    public String list(Model model){ 
     List<Employee> employees = repository.findAll(); 
     model.addAttribute("employees", employees); 
     return "list"; 
    } 

Und hier ist der thymeleaf HTML-Code:

<tr th:each="emp : ${employees}"> 
      <td th:text="${emp.id}"></td> 
      <td th:text="${emp.name}"></td> 
      <td th:text="${emp.surname}"></td> 
      <td th:text="${emp.age}"></td> 
      <td th:text="${emp.department}"></td> 
      <td> 
       <form th:action="@{/update}" method = "POST" th:object="${emp}"> 
        <input type="hidden" th:field="*{id}"></input> 
        <input type="hidden" th:field="*{name}" ></input> 
        <input type="hidden" th:field="*{surname}"></input> 
        <input type="hidden" th:field="*{age}"></input> 
        <input type="hidden" th:field="*{department}"></input> 
        <button type = "submit">Update</button> 
       </form> 
      </td> 
</tr> 

Und hier ist das Empfangsverfahren:

@RequestMapping("/update") 
    public String update(@ModelAttribute("emp") Employee emp){ 

     return "update"; 
    } 

Ich bekomme immer die folgende Ausnahme:

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'emp' available as request attribute 

Bitte lassen Sie mich wissen, wenn Sie irgendwelche Ideen zur Durchführung dieser Aufgabe haben.

Antwort

0

Dies könnte Hilfe sein.Ändern Sie Ihren Controller wie folgt. Es funktioniert für mich.

model.addAttribute("emp", new Employee()); 

@RequestMapping("/list") 
    public String list(Model model){ 
     List<Employee> employees = repository.findAll(); 
     model.addAttribute("emp", new Employee()); 
     model.addAttribute("employees", employees); 
     return "list"; 
    } 
+0

Wenn ich dies tue, gibt es keine Ausnahme, aber ich sende ein leeres Employee-Objekt zurück. – user3779674

+0

Aber sie spezifizieren es im Dokument ion wie dieses .https: //spring.io/guides/gs/handling-form-submission/ –