2011-07-05 46 views
2

我需要請求參數綁定到下面的Java類的實例(getter和setter忽略):Grails的數據綁定

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 
} 

注意,有一個1:N ShippingHouseShippingRule,但每個之間的關係ShippingRule也有參考ShippingHouse thaat擁有它。

如果這些人的Grails命令/域類,我會請求參數綁定它們

name=foo&description=bar&shippingRules[0].name=sr0&shippingRules[1].name=sr1 

但它似乎並不像這將設置每個ShippingRule內參照擁有ShippingHouse。有沒有辦法我可以自動綁定這個,或者我必須自己寫代碼?

回答

-1

如果你想實現兩個類之間的1:N關係,你應該使用正確的grails方法。類似這樣的:

class ShippingHouse { 
    String name 
    String description 
    static hasMany = [shippingRules: ShippingRule] 
} 

class ShippingRule { 
    String name 
    static belongsTo = [shippingHouse: ShippingHouse] 
} 

請注意,分號無用,並且類字段上的「private」聲明是隱式的。

+0

我不能像'hasMany'和'belongsTo'那樣使用GORM概念,因爲類是Java類 –

0

唐,

你需要編寫代碼使用BindUsing或其他一些方法來自己做。活頁夾不會(也不應該)假定父母對孩子的回引用。如果這些是GORM實體,並且關係是明確的,那麼這是不同的,但在您的情況下,活頁夾不應該假定ShippingRule類中的shippingHouse屬性與ShippingHouse類中的shippingRules屬性有任何關係。

另請注意,lucke84表示您的「私人」是隱含的。確保你明白這是什麼意思,如果你要刪除它們。如果你刪除它們,編譯器將爲這些屬性生成公有的getter和setter方法,這些方法可能是也可能不是你想要的。