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