小编Hel*_*sze的帖子

如何仅以百里香叶形式传递字符串?

我有一个小问题。当我有一个包含一些字段的对象时,很容易通过表单传递这些字段:

控制器:

@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)

spring thymeleaf

7
推荐指数
2
解决办法
9352
查看次数

带控制器重定向的Spring MVC测试发布方法

我有一个测试:

@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中添加了具有相同名称的属性,但是当我删除它时,它仍然无效.

testing spring mocking spring-mvc spring-boot

6
推荐指数
1
解决办法
833
查看次数

标签 统计

spring ×2

mocking ×1

spring-boot ×1

spring-mvc ×1

testing ×1

thymeleaf ×1