我需要将请求参数绑定(bind)到以下 Java 类的实例(省略 getter 和 setter):
public class ShippingHouse {
private String name;
private String description;
private List<ShippingRule> shippingRules = new ArrayList<ShippingRule>();
}
public class ShippingRule {
private ShippingHouse shippingHouse;
private String name
}
请注意,
ShippingHouse
之间存在 1:N 的关系。和 ShippingRule
, 但每个 ShippingRule
还引用了 ShippingHouse
那个拥有它。如果这些是 Grails 命令/域类,我会将它们与请求参数绑定(bind)
name=foo&description=bar&shippingRules[0].name=sr0&shippingRules[1].name=sr1
但似乎这不会将引用设置为拥有
ShippingHouse
在每个 ShippingRule
.有没有办法可以自动绑定(bind)它,或者我必须自己编写代码?
最佳答案
大学教师,
您需要使用 BindUsing 或其他方法自己编写代码。活页夹不(也不应该)假设任何关于从 parent 到 child 的反向引用。如果这些是 GORM 实体并且关系是明确的,那就不同了,但是在您的情况下,绑定(bind)器不应假定 ShippingRule 类中的 shippingHouse 属性与 ShippingHouse 类中的 shippingRules 属性有任何关系。
另请注意,lucke84 表示您的“私有(private)”是隐含的。如果要删除它们,请确保您了解这意味着什么。如果您删除它们,编译器将为这些属性生成公共(public) getter 和 setter 方法,这可能是您想要的,也可能不是。
关于data-binding - Grails 数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6580155/