【问题标题】:Spring MVC multiple form backing objectSpring MVC 多表单支持对象
【发布时间】:2017-11-12 14:50:19
【问题描述】:

说,在请求中,我得到了

?name=Jack&age=26&price=100&quantity=2

我有两个模型对象如下

public class User {

public String name;
public String age;

//getters and setters

}

public class Order {

public int price;
public int quantity;

//getters and setters

}

现在我想要一个控制器方法如下

@RequestMapping(value = "/submit", method = RequestMethod.GET)
public String home(@ModelAttribute("user") User user, @ModelAttribute("order") Order order, Model model) {
    //stuff
}

如您所见,我想使用两个单独的 @ModelAttribute 注释来填充模型对象。这在spring mvc中可以吗?

【问题讨论】:

  • 是的,春天有可能。

标签: spring spring-mvc


【解决方案1】:

Sattyaki,我建议你为 User 和 Order 提供一些 getter/setter,然后用另一个类组合所需的请求:

public class Checkout {

    private User user;
    private Order order;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public Order getOrder() {
        return order;
    }

    public void setOrder(Order order) {
        this.order = order;
    }
}

要请求此操作,只需使用您的参数向所需的 URI(/submit) 发出 GET。观察他们现在使用点表示法:

/submit?user.name=Jack&user.age=26&order.price=100&order.quantity=2

【讨论】:

  • 如果没有这个 Checkout 包装类,我可以这样做吗?我可以直接将请求参数绑定到用户和订单吗?
  • 提供正确的 getter 和 setter 可能会以您想要的方式工作。但是具有相同属性名称的模型可能会在您的对象上双重写入。
  • 能否控制请求参数与模型对象的绑定?就像只有nameage 将绑定到student 并且只有pricequantity 将绑定到order
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-27
  • 1970-01-01
  • 2012-01-01
  • 1970-01-01
  • 2017-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多