2012-12-13 13 views
8

Mam problem podczas tworzenia z wartością domyślną zawartą w moim bieżącym obiekcie.Wartość domyślna w select nadal istnieje po przesłaniu

Wartość jest prawidłowo ustawiony w polu, ale kiedy przesłać formularz, wartość domyślna to nadal istnieje, nawet jeśli użytkownik wybrał inną wartość z listy ...

Oto mój kontroler:

@RequestMapping(method = RequestMethod.GET) 
public String createForm(final ModelMap modelMap){ 

    User user; 

    user = new User(); 

    user.setGroup("HelpDesk"); 
    user.setName("John"); 


    ArrayList<String> groupList = new ArrayList<>(); 

    groupList.add("Admin"); 
    groupList.add("HelpDesk"); 
    groupList.add("GroupManager"); 
    groupList.add("Others"); 


    modelMap.addAttribute("user", user); 
    modelMap.addAttribute("groupList", groupList); 

    return "/user/user-add"; 
} 

@RequestMapping(method = RequestMethod.POST) 
public String createUser(@ModelAttribute("user") final User user, BindingResult result) { 

    userValidator.validate(user, result, groupList); 

    logger.info(user.getGroup()); //Will print "HelpDesk,Admin" for instance 

    return "..."; 

} 

I tu jest moim JSP:

<table> 
    <form:form method="POST" modelAttribute="user"> 

     <tr> 
       <td>Name:</td> 
       <td><form:input path="name"/></td> 
       <td><form:errors path="name" cssClass="error" /></td> 
      </tr> 


      <tr> 
       <td>Group:</td> 
       <td><form:select path="group" items="${groupList}" multiple="single"/></td> 
       <td><form:errors path="group" cssClass="error" /></td> 
      </tr> 


      <tr> 
       <td colspan="3"><input type="submit" /></td> 
      </tr> 

     </form:form> 
    </table> 

na przykład, jeśli mam wybrać "Administrator" w liście wyboru, będę się "helpdesk, admin" w "grupie" własności mojego użytkownik po przesłaniu pliku formularz ...

Co robię źle?

Dzięki za pomoc!

+0

Czy rozważałeś dodanie pustego pola na początku listy? A może byłoby to dla ciebie brzydkie rozwiązanie? :) – GGrec

+0

Korzystając z narzędzi Firebuga lub Chrome dla programistów, możesz znaleźć wartość, która jest wysyłana z przeglądarki? –

+0

@GGeorge to nie jest tak brzydki, ale chciałbym zrozumieć, dlaczego nie pracuje obecnie – user1901206

Odpowiedz

0

Mogę zobaczyć swoją metodę „post” lub „onSubmit” metody? W swojej metodzie postu musisz określić obiekt User jako atrybut lub polecenie modelu.

+0

edytowane w oryginalnym pytanie. – user1901206

+0

Ale dlaczego obiekt użytkownika jest zadeklarowany jako "ostateczny"? – SerotoninChase

+0

Spróbuj usunąć ostateczny kwalifikator dla użytkownika w swojej metodzie postu. – SerotoninChase