Мой объект домена не хранит значения, которые не указаны явно в файле JSP между операцией GET и POST на одном контроллере. Вот пример с опущенной проверкой ошибок
У меня есть доменный объект.
class foo
{
private int fieldA;
private String fieldB;
// .. getters and setters omitted
}
Контроллер
@Controller
public class MyController
{
@Autowired
private IDaoService daoService;
@RequestMapping(value = "/display", method = RequestMethod.GET)
public String newForm(@RequestParam("id") Long id, Model model, Principal principal) throws Exception
{
// check that the user has permissions
...
// get the object
Foo foo = daoService.read(id);
// at this point foo.fieldA is equal to the input id
model.addAttribute("foo", foo);
// return the JSP path
}
@RequestMapping(value="/update", method = RequestMethod.POST)
public String update(@ModelAttribute("foo") Foo foo,
BindingResult result,
Principal principal,
Model model) throws Exception
{
// ERROR - at this point, fieldA is null
}
}
1012 * JSP *
<form:form method="post" commandName="foo">
<fieldset>
<legend>Invest</legend>
<div class="fm-req">
<label for="fm-name">Field B</label>
<spring:bind path="fieldB">
<input id="fm-name" type="text" name="${status.expression}" value="${status.value}" ></input>
</spring:bind>
</div>
<div id="fm-submit" class="fm-req">
<INPUT type="submit" value="Submit" name="Submit" />
</div>
</fieldset>
</form:form>
Я бы подумал, что JSP получает объект, созданный в newForm, у которого установлено fieldA (и, возможно, fieldB). У пользователя есть возможность изменить fieldB, а затем нажать «Отправить».
Я много читал документы Spring и проверял веб-сайты, но не могу выяснить, почему foo.fieldA имеет значение null в методе обновления в контроллере.
Из того, что я понимаю о Spring MVC, этот шаблон выглядит стандартно, но, пожалуйста, не стесняйтесь меня поправлять.
Заранее спасибо,