我有一个简单的地址域对象,其中包含以下字符串字段: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
}
答案 0 :(得分:4)
"${number} ${street} ${extended?:''}, ${city}, ${state}, ${zipcode}".replace(' ,',',')
或
["$number $street",extended,city,state,zipcode].minus(null).join(', ')
你应该在哪里做一个设计决定,格式化的地址是打印在几个不同的地方?如果是这样,你可以制作一个taglib。通常,我喜欢将数据格式化职责远离域类。