【问题标题】:Grails Editing Flash Delete MessageGrails 编辑 Flash 删除消息
【发布时间】:2013-01-07 09:01:03
【问题描述】:

您好,我是 Grails 的新手,我已经实施了删除收件箱中的消息的删除操作,但现在我想更改 flash 消息以显示“2 条消息已删除”而不是“消息 4 已删除,消息 5 已删除”(如果删除)多条消息。请协助,以下是我的删除操作

定义删除() {

    def messageInstance = Message.get(params.id)

    // render error if no message found
    if (!messageInstance) {
        flash.message = message(code: 'default.not.found.message', args: [message(code: 'message.label', default: 'Message'), params.id])
        redirect(action: "phone")
    } else {
        // get the device that we are deleting from
        //specify phoneNumber so as to delete the device by phoneNumber
        def device = MessagingDevice.findByPhoneNumber(params.phoneNumber)

        // invoke deleteFromDevice on domain object, which returns true if successful
        if (messageInstance.deleteFromDevice(device)) {
            flash.message = message(code: 'default.deleted.message', args: [message(code: 'message.label', default: 'Message'), params.id])
            redirect(action: "phone", params:[phoneNumber:params.phoneNumber])
        }
    }
}

【问题讨论】:

  • if (messageInstance.deleteFromDevice(device)) { int count= messageInstance.count() flash.message = message(code: 'default.deleted.message', args: [count, message(code) : 'message.label')]) 重定向(操作:“电话”,参数:[phoneNumber:params.phoneNumber])}
  • 来实现count()返回域表的总行数以为会返回删除后的消息数??有什么建议吗??

标签: grails


【解决方案1】:

在代码中:

int count = 5 //number of deleted messages

flash.message = message(code: 'default.deleted.messages', args: [message(code: 'messages.label', default: 'Messages'), count])

在messages.properties中:

messages.label=Messages
default.deleted.messages={1} {0} deleted

【讨论】:

  • 为什么要设置删除邮件数为5??
  • 这只是一个例子,你自己设置。
  • shud count 是一个函数,我可以计算已删除邮件的数量,因为如果我设置一个默认数字不认为它会起作用???
  • 类似 int count=messageInstance.count()
  • 我以为您在问如何编辑 Flash 消息。删除消息背后的逻辑取决于您,不在此问题的范围内。 grails.org
【解决方案2】:

如果您在 messages.properties 中查找 default.deleted.message 键,您会看到它看起来像

default.deleted.message={0} {1} deleted

只需添加一个包含所需键和值的新行。

inbox.deleted.message={0} messages deleted

并在你的控制器中使用它

flash.message = message(code: 'inbox.deleted.message', args: [deletedMessageCount])

当然,您需要在使用之前为deletedMessageCount 定义一个值。

【讨论】:

    【解决方案3】:

    你可以这样做:

        def device = MessagingDevice.findByPhoneNumber(params.phoneNumber)
    
        // invoke deleteFromDevice on domain object, which returns number of objects deleted
        def count = messageInstance.deleteFromDevice(device)
        if (count) {
            flash.message = message(code: 'default.deleted.message', args: [message(code: 'message.deleted.label', default: '{0} Messages deleted'), count])
            redirect(action: "phone", params:[phoneNumber:params.phoneNumber])
        }
    

    在你的messages.properties中

    message.deleted.label={0} deleted
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-26
      • 2020-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多