Элемент отображается по этому URL:
/item/10101
с использованием этого метода контроллера:
@RequestMapping(value = "/item/{itemId}", method = RequestMethod.GET)
public final String item(HttpServletRequest request, ModelMap model,
@PathVariable long itemId)
{
model = this.fillModel(itemId);
return "item";
}
Страница содержит форму, которая подчиняется следующему методу в том же контроллере:
@RequestMapping(value = "/process_form", method = RequestMethod.POST)
public final String processForm(HttpServletRequest request,
@ModelAttribute("foo") FooModel fooModel,
BindingResult bindResult,
ModelMap model)
{
FooModelValidator validator = new FooModelValidator();
validator.validate(FooModel, bindResult);
if (bindResult.hasErrors())
{
model = this.fillModel(fooModel.getItemId());
return "item";
}
return "account";
}
Если валидатор находит ошибки в форме, он повторно отображает элемент, но вместо отображения его в исходном URL:
/item/10101
отображает его по собственному URL:
/process_form
Можно ли повторно отобразить форму по исходному URL-адресу?
/item/10101
(Я попытался получить реферер и перенаправить на него в processForm
, но затем все содержимое модели в итоге отображалось как пары имя / значение URL:)
@RequestMapping(value = "/process_form", method = RequestMethod.POST)
public final String processForm(HttpServletRequest request,
@ModelAttribute("foo") FooModel fooModel,
BindingResult bindResult,
ModelMap model)
{
String referrer = request.getHeader("referer");
FooModelValidator validator = new FooModelValidator();
validator.validate(FooModel, bindResult);
if (bindResult.hasErrors())
{
model = this.fillModel(fooModel.getItemId());
return "redirect:" + referrer;
}
return "account";
}