在我的百里香模板中,我为表单对象上的字段添加了一个隐藏字段:
<form action="#" th:action="@{/admin/endpoint}" th:object="${monkey}" method="post" class="form-horizontal" role="form">
<input type="hidden" th:field="*{id}" />
<input type="hidden" th:field="*{banana}" />
...
</form>
创建了html输出:
<input type="hidden" id="id" name="id" value="55">
<input type="hidden" id="banana" name="banana" value="3">
通过网络浏览器发布此表单按预期工作,但是 当我尝试使用MockMvc测试时,只有id字段被设置:
mvc.perform(post("/endpoint")
.param("id", String.valueOf(monkey.getId()))
.param("banana", String.valueOf(monkey.getBanana().getId())))
在我的控制器中,我让Spring为我转换表单:
@RequestMapping(value = { "/admin/endpoint" }, method = RequestMethod.POST)
public String updateMonkey(Model model, @Valid Monkey monkey, BindingResult br) {
System.out.println(monkey.getId()) // -> 55
System.out.println(monkey.getBanana()) // -> null
...
}
我需要更改什么才能在我的测试中从id中正确初始化字段“banana”?