Spring MVC - 使用对象请求参数进行表单处理

时间:2015-05-19 16:03:34

标签: java spring spring-mvc web thymeleaf

假设我的应用程序中有以下实体:

public class Payment {
    private Long id;
    private Service service;
    private User user;
    private BigDecimal amount;
}

public cass Service {
    private Long id;
    private String name;
    private BigDecimal minAmount;
    private BigDecimal maxAmount;
}

public class User {
    private Long id;
    private String login;
    private String password;
    private BigDecimal balance;
}

我需要创建一个允许用户处理付款的html表单(Payment类的实例)。所以我需要在我的控制器方法中创建Payment实例。我知道我可以添加到控制器方法,例如Service service参数,它将由具有相同名称的表单中的值填充。但是如何获得填充的Payment对象?填充ServiceUser个对象?我需要以某种方式保存我的服务器页面中的整个Service对象?怎么样? 如果重要,我会使用Thymeleaf。

1 个答案:

答案 0 :(得分:2)

在他们的百里叶文件上,只要你尊重你班级的田野结构,春天应该足够聪明,以填补不同的领域。

<form th:object="${payment}" th:action="@{/sendPayment}" method="post">
      <input type="text" th:field="*{id}"/>
      <input type="text" th:field="*{service.name}"/>
      <input type="text" th:field="*{user.id}"/>
      <button type="submit">Submit</button>
</form>

然后在您的控制器上,您只需传递付款对象:

@RequestMapping(value = "/sendPayment", method = RequestMethod.POST)
public String processPayment(final Payment payment){
    doSomethingWithPayment(payment);
}