toString()方法应该用于在Grails中显示对象吗?

时间:2013-11-23 22:23:23

标签: grails groovy

我有一个简单的地址域对象,其中包含以下字符串字段:line1,line2,city,state,zipCode。我想设置toString()方法来显示跳过任何null字段的格式化字符串。

例如,没有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
    }

1 个答案:

答案 0 :(得分:4)

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

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

你应该在哪里做一个设计决定,格式化的地址是打印在几个不同的地方?如果是这样,你可以制作一个taglib。通常,我喜欢将数据格式化职责远离域类。