我需要将请求参数绑定到以下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
和ShippingRule
之间存在1:N关系,但每个ShippingRule
也有ShippingHouse
thaat拥有它的引用。
如果这些是Grails命令/域类,我会用请求参数绑定它们
name=foo&description=bar&shippingRules[0].name=sr0&shippingRules[1].name=sr1
但似乎这不会在每个ShippingHouse
中设置对拥有ShippingRule
的引用。有没有办法可以自动绑定,或者我必须自己编写代码吗?
答案 0 :(得分:0)
唐,
您需要使用BindUsing或其他方法编写代码来自行完成。活页夹没有(并且不应该)假设从父母到孩子的背引用。如果这些是GORM实体并且关系是明确的,那就不同了,但在您的情况下,绑定器不应该假设ShippingRule类中的shippingHouse属性与ShippingHouse类中的shippingRules属性有任何关系。
另请注意,lucke84表示您的私人&#34;是隐含的。如果要删除它们,请确保您了解这意味着什么。如果删除它们,编译器将为这些属性生成公共getter和setter方法,这些方法可能是您想要的,也可能不是。
答案 1 :(得分:-1)
如果要在两个类之间实现1:N关系,则应使用正确的grails方法。像这样:
class ShippingHouse {
String name
String description
static hasMany = [shippingRules: ShippingRule]
}
class ShippingRule {
String name
static belongsTo = [shippingHouse: ShippingHouse]
}
请注意,分号是无用的,类字段上的“私有”声明是隐含的。