[英]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.