Если у меня есть форма Spring следующим образом:
<c:url value="/user/profile?id=${user.id}" var="profileURL" />
<form:form action="${profileURL}" method = "get">
<input type="submit" value="My profile">
</form:form>
Spring жалуется, что:
Your page request has caused a MissingServletRequestParameterException: Required String parameter 'id' is not present error:
Однако в методе контроллера присутствует параметр:
@RequestMapping(value = "/profile", method = RequestMethod.GET)
public String getProfile(@RequestParam("id") String id, Model model) {
User user = userService.get(Integer.parseInt(id));
model.addAttribute("user", user);
return "profile";
}
Кто-нибудь может посоветовать, почему это?
Если я использую простое поле формы, например:
<input name="id" type="hidden" value="=${user.id}">
Все хорошо. Но я предпочитаю использовать поле Spring, скрытое от необходимости.
Во время выполнения форма выглядит так:
<form id="command" action="/nameOfapplication/user/profile?id=3" method="get">
<input type="submit" value="My profile">
</form>
Это вызывает следующие сообщения в stacktrace:
Запрос вашей страницы вызвал ошибку MissingServletRequestParameterException: Обязательный строковый параметр 'id' отсутствует:
org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.handleMissingValue (RequestParamMethodArgumentResolver.java:255)
?
вaction
URL. - person Sotirios Delimanolis   schedule 17.06.2014<form:hidden>
. Это то, что вы ищете? - person Sotirios Delimanolis   schedule 17.06.2014form
обычно используется для создания форм из объектов модели (объектов поддержки форм), а не из простых параметров запроса. Если вы этого не делаете, нормально<input>
. - person Sotirios Delimanolis   schedule 17.06.2014id
в объектIdHolder
и проверить это ... Кажется чрезмерным. Тогда ваша форма будет поддерживаться объектомIdHolder
. - person Sotirios Delimanolis   schedule 17.06.2014