我有一个小问题。当我有一个包含一些字段的对象时,很容易通过表单传递这些字段:
控制器:
@RequestMapping("/")
public String hello(Model model) {
model.addAttribute("test", Test);
return "index";
}
Run Code Online (Sandbox Code Playgroud)
html:
<form th:action="@{/process}" method="post" th:object="${test}">
<input type="text" th:field="*{value}"/>
<input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
但是如果我不想有一个对象并且只传递字符串怎么办?类似的东西:
控制器:
@RequestMapping("/")
public String hello(Model model) {
model.addAttribute("test", "test string");
return "index";
}
Run Code Online (Sandbox Code Playgroud)
html:
<form th:action="@{/process}" method="post">
<input type="text" th:field="${test}"/>
<input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
不起作用。感谢帮助!
对于评论中的下一个问题:
索引.html:
<form th:action="@{/process}" method="post">
<textarea th:text="${sourceText}"/>
<input type="submit" />
Run Code Online (Sandbox Code Playgroud)
ggg.html:
<textarea th:text="${sourceText}"/>
Run Code Online (Sandbox Code Playgroud)
控制器:
@RequestMapping("/")
public String hello(Model model) {
model.addAttribute("sourceText", "asdas");
return "index";
}
@RequestMapping("/process")
public String process(Model …Run Code Online (Sandbox Code Playgroud) 我有一个测试:
@Test
public void shouldAddCompany() throws Exception {
mockMvc.perform(post("/companies")
.param("name", "companyName"))
.andExpect(model().attribute("company",
hasProperty("name", is("companyName"))));
}
Run Code Online (Sandbox Code Playgroud)
我的控制器方法看起来像这样:
@PostMapping("/companies")
public String displayCompaniesPost(@ModelAttribute Company company) {
companyService.save(company);
return "redirect:/companies";
}
Run Code Online (Sandbox Code Playgroud)
如何在测试中检查公司属性?由于重定向和状态302存在问题.
java.lang.AssertionError: Model attribute 'company'
Expected: hasProperty("name", is "companyName")
but: was null
Run Code Online (Sandbox Code Playgroud)
我认为这是因为控制器因重定向而转向GET方法.当我删除此重定向时一切正常,但我不想删除该重定向.
编辑(GetMapping):
@GetMapping({"/", "/companies"})
public String displayCompanies(Model model) {
model.addAttribute("company", new Company());
List<Company> companies = companyService.findAll();
model.addAttribute("companies", companies);
return "companies";
}
Run Code Online (Sandbox Code Playgroud)
我认为问题是因为在getMapping中添加了具有相同名称的属性,但是当我删除它时,它仍然无效.