2017-01-12 18 views
0

Я заполнил список с содержимым моего контроллера Spring (провинция), и у меня есть другой объект (profile2), который мне нужно получить от выбранного значения из (Provincia) ... и другие ценности в моей форме страны, и т.д ...как извлечь выбранное значение из выпадающего списка с помощью загрузки Thymeleaf и Spring

@RequestMapping(value = "/editprofileabout4", method = RequestMethod.GET) 
public ModelAndView editProfileAbout4(ModelAndView modelAndView) { 

    Usuario usuario = getUsuario(); 
    Profile profile = profileService.getUserProfile(usuario); 
    Profile2 profile2 = profile2Service.getUserProfile2(usuario); 
    List<Provincia> provincia = provinciaService.readAllProvincia(); 

    Profile webProfile = new Profile(); 
    webProfile.safeCopyFrom(profile); 

    modelAndView.getModel().put("edituserprofile2th", usuario); 
    modelAndView.getModel().put("editprofile2about2th", profile2); 
    modelAndView.getModel().put("editprovincia2th", provincia); 
    modelAndView.setViewName("editprofileabout4"); 

    return modelAndView; 
} 

@RequestMapping(value = "/doeditprofileabout4", method = RequestMethod.POST) 
public ModelAndView editProfileAbout4(ModelAndView modelAndView, @Valid Profile2 profile2, @Valid Provincia provincia, BindingResult result) { 

    modelAndView.setViewName("editprofileabout4"); 

    System.out.println("  !!!!!!!!!!!!! PROFILE2a: " + profile2.getBirthdate()); 
    System.out.println("  !!!!!!!!!!!!! PROFILE2b: " + profile2.getGender()); 
    System.out.println("  !!!!!!!!!!!!! PROFILE2d: " + profile2.getProvincia()); 
    System.out.println("  !!!!!!!!!!!!! PROFILE2x: " + provincia.toString()); 

    Usuario usuario = getUsuario(); 
    Profile2 profile = profile2Service.getUserProfile2(usuario); 
    profile.setCountry(profile2.getCountry()); 
    profile.setGender(profile2.getGender()); 
    profile.setBirthdate(profile2.getBirthdate()); 
    profile.setProvincia(provincia); 

    if (!result.hasErrors()) { 
     profile2Service.save(profile); 
     modelAndView.setViewName("redirect:/editprofileabout4"); 
    } 
    return modelAndView; 

} 

в моем HTML, у меня есть:

<form class="sky-form" id="sky-form4" action="#" th:object="${editprofile2about2th}" th:action="@{/doeditprofileabout4}" method="post"> 

    <section> 
    <div class="col-lg-3"> 
      <select class="form-control" th:object="${editprovincia2th}" id="ddl" name="ddl"> 
      <option value="" th:text="#{editprofile.about4.provincia}">Seleccionar Provincia</option> 
      <option th:each="dropDownItem : ${editprovincia2th}" 
                th:value="${dropDownItem.id_provincia}" 
                th:text="${dropDownItem.provincia}"></option> 
      </select> 
     </div> 
    </section> 

, но я не могу найти рабочий пример о том, как извлеките выбранный ключ и значение (th: select), соответствующее значению в списке, и верните его в конец (или переместите его в объект profile2, который имеет проводной объект в провинциях). Я получаю нулевые значения для provincia в моем контроллере после Post.

И когда я включаю (выбираю th: field = "* {provincia}") в HTML, он дает мне сообщение об ошибке ... Появилась непредвиденная ошибка (тип = Внутренняя ошибка сервера, статус = 500) , Ошибка при выполнении процессора 'org.thymeleaf.spring4.processor.attr.SpringSelectFieldAttrProcessor' (editprofileabout4: 120) Недопустимое свойство 'provincia' класса bean [java.util.ArrayList]: свойство bean 'provincia' не читается или имеет недопустимый метод getter: соответствует ли тип возвращаемого значения getter типу параметра сеттера?

Спасибо за вашу помощь. Любая документация оценена.

ответ

0

Вы должны удалить th:object атрибут из select элемента и только держать один для формы, потому что, как Thymeleaf документации говорится:

После того, как внутри тега, ни один другой й: атрибут объекта не может быть указано. Это согласуется с тем, что HTML-формы не могут быть вложены в .

th:object атрибута в форме, то нужно ссылаться на формы-резервный компонент, то есть объект, который может содержать любые значения, которые вы отправить через форму, например, Provincia

На данный момент вы пытаетесь получить доступ к свойству PROVINCIA объекта List, который просто не существует.

+0

Спасибо Fuudge. Когда я удаляю объект th: он тоже не работает. – Mike

+0

работает с