Получить добавленные значения URL текущей страницы - Spring
Я играю с Spring, и мне тяжело понять, как получить добавленные переменные URL текущей страницы в моем контроллере. Например, я редактирую объект Address на странице jsp, затем отправляю его, и он переходит к правильному методу в моем контроллере. Тем не менее, он не передает значение id объекта Address, который был только что изменен (но каждое другое значение передается правильно). Моя страница, содержащая форму, получает правильное значение идентификатора, переданное ей, и я даже создал скрытые поля ввода, которые содержат идентификатор адреса (тот, с которым у меня возникают проблемы) и идентификатор контакта (который устанавливается на контроллер правильно). Что я хотел бы знать, так это как я могу получить значение добавленной переменной из URL-адреса моей страницы формы в соответствующем методе контроллера. Если это невозможно, то есть ли другой способ получить это значение?
Вот моя форма:
<form:form method="post" action="editAddress.html">
<table>
<tr>
<td><form:input type="hidden" path="id" placeholder="<c:out value='${command.id}' />"/></td>
</tr>
<tr>
<td><form:input type="hidden" path="contactId" placeholder="<c:out value='${command.contactId}' />"/></td>
</tr>
<tr>
<td><form:label path="street">Street: </form:label></td>
<td><form:input type="text" path="street" placeholder="<c:out value='${command.street}' />"/></td>
</tr>
<tr>
<td><form:label path="city">City: </form:label></td>
<td><form:input type="text" path="city" placeholder="<c:out value='${command.city}' />"/></td>
</tr>
<tr>
<td><form:label path="state">State: </form:label></td>
<td><form:input type="text" path="state" placeholder="<c:out value='${command.state}' />"/></td>
</tr>
<tr>
<td><form:label path="zip">Zip: </form:label></td>
<td><form:input type="text" path="zip" placeholder="<c:out value='${command.zip}' />"/></td>
</tr>
<tr>
<td><form:label path="galaxy">Galaxy: </form:label></td>
<td><form:input type="text" path="galaxy" placeholder="<c:out value='${command.galaxy}' />"/></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Update Address"/>
<input type="button" value="Delete Address" action="deleteAddress.html" />
</td>
</tr>
</table>
</form:form>
И URL-адрес этой страницы заканчивается следующим: /showAddress.html?id=3
Наконец, вот мой метод контроллера, который вызывается:
@RequestMapping(value="/editAddress")
public String updateAddress(@ModelAttribute("address") Address address, BindingResult result) {
//address param is coming from form values, not from a java obj
int id = address.getId(); //not getting this value
int contactId = address.getContactId(); //getting this correctly
dbService.updateAddress(address);
return "redirect:showContact.html?id=" + contactId;
}
id = 0, когда должно быть 3. Есть идеи? Я играл с HttpServletResponse, HttpServletRequest, ModelAndView, HttpSession и т. Д., Но я не могу ничего понять. Это просто результат плохого дизайна приложения? Любая помощь будет принята с благодарностью. Благодарю.
Примечание: значение id изменится, так как это PK для моей таблицы адресов.
1 ответ
Я не знаю, как я это упустил, но с помощью getParameter ("id") HttpServletRequest все получилось. Передайте объект HttpServletRequest в метод в качестве параметра, используйте String addressId = request.getParameter("id"); Отлично работает.