簡體   English   中英

Grails命令對象默認值

[英]Grails Command Object Default Value

我正在嘗試使用Grails命令對象來過濾動作參數。 但是,如果該參數不在URL中,我想設置一個默認值。

class ListCommand {

    String order = 'desc'
    String sort = 'startDate'

}

def list(ListCommand cmd) {
    println cmd.order
}

我以為行為與創建域對象相同。 我不想像這樣處理動作中的每個參數:

cmd.order = params.order ?: 'desc'

如果您始終使用這樣的動作聲明:

def list(ListCommand cmd) { ... }

要么

def list = {ListCommand cmd -> ...}

您可以嘗試以下方法:

class ListCommand {
    String order
    String sort

    def beforeValidate() {
        order = order ?: 'desc'
        sort = sort ?: 'startDate'
    }
}

因為在這些動作定義中validate()方法總是調用命令對象。

我認為您不能為命令對象字段設置默認值。

我建議您在綁定參數之前創建一個服務以默認值初始化命令對象:

def service

def action = {
    def listCommand = service.createListCommand() 
    bindData(listCommand, params)
}


class Service {
   def createListCommand() {
       def listCommand  = new ListCommand()
       initDefaultValues(listCommand)
       return listCommand
   }

def initDefaultValues(def listCommand){
        listCommand.order = 'desc'
        listCommand.sort = 'startDate'
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM