2012-10-19 65 views
0

我工作的一個Grails項目,我有一個用戶的域模型如下:Grails從域中的belongsTo訪問值?

class SecUser { 

    transient springSecurityService 

    String username 
    String email 
    String password 
    boolean enabled 
    boolean accountExpired 
    boolean accountLocked 
    boolean passwordExpired 

    static belongsTo = [area:Areas] 

    ..... 
} 

我也是用的springSecurityUI,我有這個在創建用戶觀點:

<s2ui:textFieldRow readonly='yes' name='area' labelCode='user.area.label' bean="${user}" 
           labelCodeDefault='Area' value="${area}"/> 

當我看到看到框區域的創建視圖,而不是當前的登錄用戶的區域填充,我可以看到以下內容:

com.testapp.Areas : 1 

我假設這是該用戶的部門ID,但我想顯示實際值,我怎麼能爲關係對象做到這一點?

感謝您的幫助

編輯.......

下面是我的領域類,因爲它代表

類地區{

String name 

static hasMany = [users:SecUser] 

}

編輯...

我現在已經解決了這個使用:

value="${area.name}" 

回答

0

如果你只是想顯示實際ID屬性,那麼你可以這樣做是這樣的:

<s2ui:textFieldRow readonly='yes' name='area' labelCode='user.area.label' bean="${user}" 
          labelCodeDefault='Area' value="${area?.id}"/> 
+0

創建用戶頁面有一個名爲「area」的只讀字段,我希望它等於當前登錄用戶試圖創建用戶的值,所以此代碼會不幸的是,還有其他想法嗎? – user723858

+0

我沒有足夠的權限來評論全部,但爲了迴應您的最新評論 - 只需將訪問者設置爲**名稱**而不是** ID **即可,如果這是您想要顯示的內容! **值=「$ {area?.name}」** – user553180

+0

謝謝是的,我昨晚修復了這個問題並更新了帖子:-) – user723858

1

com.testapp.Areas : 1是默認toString()方法的輸出。要更改輸出,您需要在Areas上編寫自己的toString()

class Areas { 

    String toString() { 
     "the actual string representation of my Areas object" 
    } 
} 
+0

你對我會怎麼做了進一步的說明? – user723858

+0

你不知道如何寫一個toString()? – doelleri

+0

是的我只是不明白這是如何適應我遇到的問題。我已經用我的Area Class更新了我的帖子,我如何修改它以便我可以將Area值拉回給該用戶?感謝您的幫助 – user723858