Просто удалите «путь» из тега ввода jsp и используйте HttpServletRequest для получения оставшихся данных.
Например, у меня есть боб, как
public class SomeData {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Тогда в jsp у меня будут дополнительные поля данных для отправки в обычном HTML-теге
<form:form method="post" action="somepage" commandName="somedata">
<table>
<tr>
<td>name</td>
<td><form:input path="name" /></td>
</tr>
<tr>
<td>age</td>
<!--Notice, this is normal html tag, will not be bound to an object -->
<td><input name="age" type="text"/></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="send"/>
</td>
</tr>
</table>
</form:form>
Обратите внимание, у боба somedata есть поле имени, возраст которого не указан. Таким образом, поле возраста добавляется без «пути». Без атрибута path свойство объекта не будет связано с этим полем.
на контроллере мне нужно будет использовать запрос HttpServletRequest, как,
@RequestMapping("/somepage")
public String someAction(@ModelAttribute("somedata") SomeData data, Map<String, Object> map,
HttpServletRequest request) {
System.out.println("Name=" + data.getName() + " age=" + request.getParameter("age"));
/* do some process and send back the data */
map.put("somedata", data);
map.put("age", request.getParameter("age"));
return "somepage";
}
при доступе к данным в представлении,
<table>
<tr>
<td>name</td>
<td>${somedata.name}</td>
</tr>
<tr>
<td>age</td>
<td>${age}</td>
</tr>
</table>
somedata - это bean-компонент, который предоставляет свойство name, а возраст явно задает атрибут контроллером.