如何通过MockMvc传递隐藏的实体ID字段?

时间:2018-01-20 17:43:14

标签: java spring-mvc thymeleaf mockmvc

在我的百里香模板中,我为表单对象上的字段添加了一个隐藏字段:

<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”?

0 个答案:

没有答案