2017-10-15 3 views
1

Ich versuche, Werte in der Datenbank aus einer Dropdown-Liste zu beharren in Frühling Stiefel, thymeleaf aber die Datenbank mit leeren Werten gefüllt.Frühling Stiefel Thymeleaf Dropdown-Liste

Anscheinend übergibt der Controller den Wert nicht.

Ich kann zwar in GET die Werte abrufen und anzeigen, aber ich kann sie nicht in POST bestehen bleiben.

Ich bin nicht in der Lage ein klares Beispiel von überall zu bekommen und auch die Beispiele auf Thymeleaf nicht klar sind.

Bitte helfen Sie mit einem guten Beispiel oder einer Lösung.

Der Code ist wie folgt.

@Controller 
public class HomeController { 

    @RequestMapping(value = "/signup", method = RequestMethod.POST) 
    public String signupPost(@ModelAttribute("user") User user, 
     Model model, BindingResult result) { 

     if (!result.hasErrors()) { 
      userService.saveUser(user); 
     } 
     return "redirect:/"; 

    } 

} 

Die User Klasse ist als unten

@Entity 
public class User { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "user_id", nullable = false, updatable = false) 
    private Long userId; 

    @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL) 
    @JoinColumn(name = "award_partner_id") 
    private AwardPartner awardPartner; 

    getters and setters.... 
} 

Der HTML-Schnipsel ist hier:

<!--Award Partner--> 
<div class="form-group"> 
    <label class="col-md-4 control-label">Award Partner</label> 
    <div class="col-md-6 selectContainer"> 
     <div class="input-group"> 
      <span class="input-group-addon"><i 
       class="glyphicon glyphicon-list"></i></span> 
       <select name="awardPartner" roleId="awardPartner" id="awardPartner" 
       th:field="*{awardPartner}" class="form-control selectpicker"> 
       <option value="">Select Award Partner</option> 
       <option th:each="awardPartner : ${awardPartners}" 
        th:value="${awardPartner.id}" 
        th:text="${awardPartner.title}"></option> 
      </select> 
     </div> 
    </div> 
</div> 

<!-- end snippet --> 
+0

in Ihrem HTML, gibt es nichts über einen Benutzer. –

+0

@ SébastienTemprado Entschuldigung, aber ich habe dich nicht bekommen. Ich habe den Benutzerteil nicht gepostet, da er weiterhin gut ist. Nur das County- und AwardPartner-Snippet steht vor einem Problem. – Ryan

+0

Was bekommen Sie im Benutzerobjekt unter 'awardPartner' in der Postanfrage? –

Antwort

1

In Ihrem Formular-Tag, ich denke, es ist th:object="user".

In Ihrem Select-Tag gibt es th:field="*{awardPartner}". Dies bedeutet, dass Sie den ausgewählten Wert (den Wert des ausgewählten Options-Tags) in das Feld awardPartner des Objektbenutzers eingeben. Dieses Feld awardPartner vom Typ AwardPartner

In den Optionswerten haben Sie eine ID (int oder String?) Als Wert bekommen aber nicht ein Objekt vom Typ AwardPartner

+0

Vielen Dank eine Mühle! Das hat wie ein Zauber funktioniert. – Ryan

Verwandte Themen