在Springboot中,值不会从@requestmapping从表单填充为html

时间:2019-07-14 10:59:52

标签: java spring spring-boot thymeleaf

我试图添加/打印来自html的两个值,并将添加的内容显示到另一个html中。因此,第一个请求即将到达端点@GetMapping("/addition"),并且正在打开form,在form动作中,我给了另一个端点@PostMapping("/submit"),它应该在另一个html上发送值,但是它正在打印唯一不是来自表单的硬编码值。

所以这里是控制器部分:

@GetMapping("/addition")
public String getInputForm(Model model) {
 model.addAttribute("addpojo", new AddPojo());
    return "addition"; 
}   

@PostMapping("/submit")
public String SubmitForm(@RequestParam("a") int a, @RequestParam("b") int b, AddPojo addpojo, Model model) {
addpojo.setA(a); addpojo.setB(b);

model.addAttribute("com", addpojo);
    return "added";

}

AddPojo.java

公共类AddPojo {

private int a;    
private int b;
getter and setters....

addition.html:

<form action="#" th:action="@{/submit}" th:object="${addpojo}" method="POST"> First Value:<input type="text" name="a" th:field="*{a}"/> Second Value:<input type="text" name="b" th:field="*{b}"/> <p><input type="submit" value="add" /> <input type="reset" value="Reset" /></p> </form>

added.html

<body> <!-- ${add.a + add.b} --> Addition of two values is: ${com.a+com.b} </body>

2 个答案:

答案 0 :(得分:1)

从HTML中获取的值不会作为方法的整数。因此,应将参数字符串而不是整数。下面的方法测试成功。

@PostMapping("/submit")
    public String SubmitForm(@RequestParam("a") String a, @RequestParam("b") String b, Model model,AddPojo addPojo) {

        addPojo.setA(Integer.parseInt(a));
        addPojo.setB(Integer.parseInt(b));

        model.addAttribute("com", addPojo);
        return "added";

    }

答案 1 :(得分:0)

我认为,如果您像这样编写控制器,将会得到预期的结果。接收带有@ModelAttribute的对象。不需要RequestParam。

@PostMapping("/submit")
public String SubmitForm(@ModelAttribute("addpojo") AddPojo addpojo, Model model) {    
model.addAttribute("com", addpojo);
    return "added";

}

在HTML中打印您的总和,请使用此代码段

 Addition of two values is: <span th:text="${com.a + com.b}"></span>