2017-02-13 1 views
0

Ich habe 2 Entity-Klassen mit dem Namen District und Street, in Ansicht, um das Formular Street Objekt zugewiesen ist. Wie kann ich den Wert von Street.district.id binden? Zum Abschicken bekomme ich NullPointerException.Spring MVC @ModelAttribute bind subclasses

Ansicht Einheiten und Form:

<form class="form-inline" action="#" th:action="@{/direct/api/v1/newStreet}" th:object="${street}" method="POST"> 
      <div class="form-group"> 
       <label for="name">Name</label> 
       <input type="text" th:field="*{name}" class="form-control" id="name" placeholder="Street name"/> 
      </div> 
      <div class="form-group"> 
       <label for="district">District</label> 
       <select class="form-control" id="district"> 
        <option th:each="d : ${districts}" th:field="*{district.id}" th:value="${d.id}" th:text="${d.name}"></option> 
       </select> 
      </div> 
      <button type="submit" class="btn btn-default">Save</button> 

Controller:

@RequestMapping(value = "/newStreet", method = RequestMethod.POST) 
public String newStreet(@ModelAttribute Street street){ 
    log.info(street.getName()); 
    log.info(String.valueOf(street.getDistrict().getId())); 
    return "redirect:/streets"; 
} 

Auf Formular bekommen I Street Namen von Ein- und null District.

Antwort

1

Ihr Fehler liegt in der Auswahl.

Das Attribut

th: field = "* {} district.id"

in der Auswahl nicht in der Option Tag

Ergebnis sein sollte:

<select class="form-control" id="district" th:field="*{district.id}"> 
        <option th:each="d : ${districts}" th:value="${d.id}" th:text="${d.name}"></option> 
       </select> 
+0

@GVArt Sie sind willkommen :) – cralfaro

Verwandte Themen