2013-11-23 40 views
2

我有一個簡單的地址域對象,它具有以下字符串字段:line1,line2,city,state,zipCode。我想設置toString()方法來顯示一個跳過任何空字段的格式化字符串。應該使用toString()方法在Grails中顯示對象嗎?

例如,沒有line2的地址應顯示爲:,(例如「1234 My Street,Albuquerque,NM,12345」,而不是「1234 My Street,null,Albuquerque,NM,12345」 )。

有沒有一個光滑的方式做到這一點在groovy比以下以外?另外,由於Grails生成的代碼使用toString()來表示網頁上的域對象,我是否應該繼續使用toString()作爲顯示目的,或者我應該製作一個gsp模板或用來顯示和格式化域對象信息?如果toString()僅用於入門,不應長期用於顯示目的,則此問題將消失。

public String toString() { 
    String str = null 
    if (line1) { 
     str += line1 
    } 
    if (line2) { 
     if (string.empty == false) { 
      str += ", " 
     } 
     str += line2 
    } 

回答

4
"${number} ${street} ${extended?:''}, ${city}, ${state}, ${zipcode}".replace(' ,',',') 

["$number $street",extended,city,state,zipcode].minus(null).join(', ') 

你應該在哪裏這是一個設計決策,是格式化的地址會在幾個不同的地方進行打印?如果是這樣,你可以做一個taglib。通常,我喜歡將數據格式化職責遠離域類。

相關問題