gpt4 book ai didi

java - 如何使用 MockMvc 传递 ModelAttrubute 参数?

转载 作者:行者123 更新时间:2023-11-29 06:36:43 26 4
gpt4 key购买 nike

我有这个 html Spring 表单:

<form:form action="addVacancy" modelAttribute="myVacancy">
<form:label path="name">name</form:label>
<form:input path="name" ></form:input>
<form:errors path="name" cssClass="error" />
<br>
<form:label path="description">description</form:label>
<form:input path="description" id="nameInput"></form:input>
<form:errors path="description" cssClass="error" />
<br>
<form:label path="date">date</form:label>
<input type="date" name="date" />
<form:errors path="date" cssClass="error" />
<br>
<input type="submit" value="add" />
</form:form>

我用这种方法处理这个表单:

@RequestMapping("/addVacancy")
public ModelAndView addVacancy(@ModelAttribute("myVacancy") @Valid Vacancy vacancy,BindingResult result, Model model,RedirectAttributes redirectAttributes){
if(result.hasErrors()){
model.addAttribute("message","validation error");
return new ModelAndView("vacancyDetailsAdd");
}
vacancyService.add(vacancy);
ModelAndView mv = new ModelAndView("redirect:goToVacancyDetails");
mv.addObject("idVacancy", vacancy.getId());
redirectAttributes.addAttribute("message", "added correctly at "+ new Date());
return mv;
}

如何提出相同的请求,提交表单后获得。这必须通过 MockMvc 来完成。

@Test
public void testMethod(){
MockHttpServletRequestBuilder request = MockMvcRequestBuilders.get("/addVacancy");
//what must I write here?
ResultActions result = mockMvc.perform(request);
}

我很困惑。

最佳答案

当浏览器需要提交表单时,它通常会序列化表单 <input>字段作为 url 编码参数。因此,当你想模拟 HttpServletRequest 时,您需要将这些相同的参数添加到请求中。

request.param("name", "some value")
.param("description", "description value")
.param("date", "some acceptable representation of date");

DispatcherServlet将使用这些参数创建一个 Vacancy实例作为参数传递给您的处理程序方法。

关于java - 如何使用 MockMvc 传递 ModelAttrubute 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19430365/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com