Grails命令对象默认值
我试图使用Grails命令对象来过滤动作参数。但如果URL中不存在该参数,我想设置一个默认值Grails命令对象默认值,grails,Grails,我试图使用Grails命令对象来过滤动作参数。但如果URL中不存在该参数,我想设置一个默认值 class ListCommand { String order = 'desc' String sort = 'startDate' } def list(ListCommand cmd) { println cmd.order } 我认为行为将与创建域对象时相同。我不想像这样处理操作中的每个参数: cmd.order = params.order ?: 'desc'
class ListCommand {
String order = 'desc'
String sort = 'startDate'
}
def list(ListCommand cmd) {
println cmd.order
}
我认为行为将与创建域对象时相同。我不想像这样处理操作中的每个参数:
cmd.order = params.order ?: 'desc'
我认为您不能为命令对象字段设置默认值 我建议您创建一个服务,在绑定参数之前使用默认值初始化命令对象:
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'
}
}
如果始终使用此类操作声明:
def list(ListCommand cmd) { ... }
或
你可以试试这个:
class ListCommand {
String order
String sort
def beforeValidate() {
order = order ?: 'desc'
sort = sort ?: 'startDate'
}
}
因为在这些操作定义中,validate()方法总是调用命令对象。这将是理想的,但beforeValidate()方法似乎不是为命令对象调用的
class ListCommand {
String order
String sort
def beforeValidate() {
order = order ?: 'desc'
sort = sort ?: 'startDate'
}
}