Вам понадобится зарегистрированный Конвектор, чтобы преобразовать строку в Foo.
, а затем вам нужно удалить .bar
из атрибута имени.
@ См. Spring Reference: Глава6.5 Преобразование типа Spring 3
Другое решение
@RequestMapping( "/test" )
public String doGetModels(
@ModelAttribute( "fooBar1" ) Object fooBar1,
@ModelAttribute( "fooBar2" ) Object fooBar2 )
{
// do something
return "view";
}
<form action="test">
<input type="text" name="fooBar1"/>
<input type="text" name="fooBar2"/>
<input type="submit" value="save"/>
</form>
То, что вы пробовали, просто невозможно.Причина:
public String doGetModels(
@ModelAttribute( "foo1" ) Foo foo1, ...)
Это просто ярлык для
public String doGetModels(ModelMap model, ...)
Foo foo1 = (Foo) mode.get("foo1");
Но ModelMap (если он заполнен) из запроса не знает о структуре Foo
.Для этой карты существует только набор значений - некоторые с точкой в имени и одинаковым префиксом для имени, но это не означает, что они образуют один объект.