У меня есть простая форма JSP Spring 2.5, где я принимаю знак зодиака пользователя из выпадающего списка, проверяю, что он выбрал параметр, и при отправке формы я вызываю служебный метод, чтобы получить прогноз для знака ( фактически случайные строки для этого тестового приложения).
Но когда я установил его в ModelAttrribute
, он не будет передан на страницу ответа. Как я могу передать дополнительный атрибут на страницу ответа?
Объект моей модели - Forecast
, с двумя атрибутами ZodiacSign
и Forecast
. Следующий код в контроллере, который вызывается при отправке формы:
@RequestMapping(method = RequestMethod.POST)
public String processSubmit(@ModelAttribute("forecast") Forecast forecast, BindingResult result, SessionStatus status, ModelMap model) {
forecastFormValidator.validate(forecast, result);
if (result.hasErrors()) {
//if validator fails
return "forecastForm";
}
else {
//the utility class, will set a random string as forecast
//in the forecast attribute of forecast object and return the
//modified object
forecast = myUtil.returnForecastForZodiac(forecast);
//Following prints the forecast string correctly
System.out.println(forecast.getForecast());
}
status.setComplete();
//form success
return "forecastSuccess";
}
JSP forecastSuccess
просто отображает атрибуты модели «прогноз» (пример: $ {forecast.zodiacSign}), но не отображает значение атрибута прогноза, которое я установил в методе выше ( в Факт я изменил сам объект ).
Кажется, что форма ответа передана старому объекту, который forecastForm
предоставил его (только со знаком зодиака), и манипуляции, которые я делал в моем методе, не повлияли на него.