【问题标题】:Should toString() method be used to display object in Grails?是否应该使用 toString() 方法在 Grails 中显示对象?
【发布时间】:2013-11-23 22:23:23
【问题描述】:

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

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

【问题讨论】:

    标签: grails groovy


    【解决方案1】:
    "${number} ${street} ${extended?:''}, ${city}, ${state}, ${zipcode}".replace(' ,',',')
    

    或

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

    你应该在哪里做是一个设计决定,格式化的地址会打印在几个不同的地方吗?如果是这样,您可以制作一个标签库。一般来说,我喜欢让数据格式化职责远离域类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-22
      • 1970-01-01
      • 2012-10-26
      • 1970-01-01
      • 2013-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多