Combobox не заполняется после сбоя проверки формы - Spring 3 MVC - PullRequest
1 голос
/ 18 января 2012

Я использую Spring mvc для своего веб-приложения.У меня есть простая форма с некоторыми текстовыми полями и списками.

Проблема: Я отправляю форму с нулевыми значениями, и она выполняет проверку.Поскольку здесь есть нулевые значения, проверка снова показывает форму, но с пустыми полями со списком.Когда форма отображается в первый раз, все работает нормально.

Вот код.Как мне заполнить их последними выбранными значениями?

ПРОСМОТР ФАЙЛА

<form:form method="post" modelAttribute="screening">

<table>
<!-- Text Form -->
    <tr>
        <td>EPI ID</td>
        <td><form:input path="epi_Id" /></td>
        <td><form:errors path="epi_Id" cssClass="error" /></td>
    </tr>

    <tr>
    <!-- Combo-Box -->
        <td>Enrollment Center</td>            
        <td>
            <form:select path="enrollmentCenter">
            <form:options items="${epiCentersList}" itemValue="centerID" itemLabel="name"/>
            </form:select>
        </td>

        <td><form:errors path="enrollmentCenter" cssClass="error" /></td>
    </tr>

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

</form:form>

КОНТРОЛЛЕР

@Controller
@RequestMapping("/ScreeningForm")
@SessionAttributes("screening")

public class ScreeningFormController {

@RequestMapping(method=RequestMethod.GET)
public String setupForm(Model model)
{
    ScreeningDomain screen=new ScreeningDomain();
    model.addAttribute("screening", screen);        
    model.addAttribute("epiCentersList", usc.getAllEpiCentersList());
    return "ScreeningForm";
}

@RequestMapping(method=RequestMethod.POST)
public String submitForm(@ModelAttribute("screening") ScreeningDomain screeningDomain, BindingResult result, SessionStatus status)
{
    ScreeningServiceImpl screenService = new ScreeningServiceImpl();
    screeningValidator.validate(screeningDomain, result);
    if (result.hasErrors())
    {
        UtilityServiceClass usc=new UtilityServiceClass();
        model.addAttribute("epiCentersList", usc.getAllEpiCentersList());
        model.addAttribute("screening", screeningDomain);
        return "ScreeningForm";
    }
    else
    {
        screenService.add(screeningDomain);
        return "redirect:ScreeningForm";
    }
}

}

Все остальное работает нормально.Я думаю, что модель теряет объект списка значения "epiCentersList" , но я не могу понять, почему.

1 Ответ

4 голосов
/ 21 февраля 2012

В методе контроллера, в котором вы проверяете данные формы, вам необходимо снова добавить список в объект модели, используя:

if(result.hasErrors()) {
    model.addAttribute("YourListName",yourList);
    return "inputForm";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...