весенняя форма не заполняется при отправке формы - PullRequest
0 голосов
/ 09 января 2011

Когда я загружаю эту форму, таблица стран заполняется из базы данных с 240 странами.если я отправлю его с пустыми обязательными полями, страница снова перезагрузится с сообщениями об ошибках.Но я не получил ни одной страны в списке.Я использую один и тот же код для заполнения списка методов GET и POST - см. Ниже

      <form:form commandName="student_personal_info" method="post">
               <table>
                        <tr>
                        <td><form:label path="country">Country:</form:label></td>
                        <td><form:select path="country">
                            <form:option value="NONE" label=" --Select-- "></form:option>
                            <form:options items="${countries}"/>
                            </form:select>
                        </td>
            </tr></table>
        </form:form>



@RequestMapping(value = "student_personal_info", method = RequestMethod.GET)
    public ModelAndView DisplayPersonalForm(ModelAndView model) {
        StudentPersonalInfo personalInfo = new StudentPersonalInfo();
        model.addObject("student_personal_info", personalInfo);

        model.addObject("countries",getCountries());
        return model;
    }  //this works fine

    @RequestMapping(value = "student_personal_info", method = RequestMethod.POST)
    public String PersonalFormSubmitted(
            @ModelAttribute("student_personal_info") @Valid StudentPersonalInfo student_personal_info,
            BindingResult result, ModelAndView model) {
        model.addObject("countries", getCountries());
        if (result.hasErrors()) {
            logger.info("From student personal info, there are "
                    + String.valueOf(this.getCountries().size())
                    + "  Countries"); //This prints 240 countries on the consule
            return "student_personal_info";
        }

        else
            return "redirect:/display_program_of_study.tsegay";
    }

все остальные мои настройки работают нормально

Ответы [ 2 ]

1 голос
/ 10 января 2011

Проблема в том, что вы не можете заполнить параметр ModelAndView .

Вам нужно изменить подпись вашего метода на ModelMap вместо ModelAndView.

@RequestMapping(value = "student_personal_info", method = RequestMethod.POST)
    public String PersonalFormSubmitted(
            @ModelAttribute("student_personal_info") @Valid StudentPersonalInfo student_personal_info,
            BindingResult result, ModelMap model) {

КСТАТИ: ModelAndView даже не упоминается действительный параметр в Ссылка Spring .Это только допустимый тип возвращаемого значения.

В вашем особом случае вы также можете использовать метод ModelAtttribute для заполнения вашей модели:

@ModelAttribute("countries")
public Collection<Country> populateCountries() {
    return getCountries();
}
...
1 голос
/ 09 января 2011

Я думаю, вы не можете заполнить ModelAndView, не возвращая его, поэтому вам нужно использовать другой тип аргумента:

@RequestMapping(value = "student_personal_info", method = RequestMethod.POST)        
public String PersonalFormSubmitted(
         @ModelAttribute("student_personal_info") @Valid StudentPersonalInfo student_personal_info,
         BindingResult result, ModelMap model) { ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...