Spring MVC - 使用对象请求参数处理表单
Spring MVC - form handling with object request params
假设我的应用程序中有以下实体:
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
class 的实例)。所以我需要在我的控制器方法中创建 Payment
实例。我知道我可以添加到控制器方法,例如 Service service
参数,它将由具有相同名称的表单中的值填充。但是我怎样才能得到填充的 Payment
对象呢?使用填充的 Service
和 User
对象?我需要以某种方式将整个 Service
对象保存在我的服务器页面中吗?如何?
如果重要的话,我会使用 Thymeleaf。
在他们的 thymeleaf 文件中,只要您尊重 class 的字段结构,Spring 应该足够聪明来填充不同的字段。
<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);
}
假设我的应用程序中有以下实体:
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
class 的实例)。所以我需要在我的控制器方法中创建 Payment
实例。我知道我可以添加到控制器方法,例如 Service service
参数,它将由具有相同名称的表单中的值填充。但是我怎样才能得到填充的 Payment
对象呢?使用填充的 Service
和 User
对象?我需要以某种方式将整个 Service
对象保存在我的服务器页面中吗?如何?
如果重要的话,我会使用 Thymeleaf。
在他们的 thymeleaf 文件中,只要您尊重 class 的字段结构,Spring 应该足够聪明来填充不同的字段。
<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);
}