Контроллер Grails, управление объектами Command
В действиях контроллера Grails, для валидации, мы используем командные объекты. Проблема в том, что количество классов CommandObject взорвалось.
def publish = { PublishCommand command ->
if (command.hasErrors()) {
return redirect(action: 'errors',params:params)
}
//rest of the code
}
......
Class PublishCommand {
long personId
String name
static constraints = {
personId(nullable: false, blank: false)
name(nullable: false, blank: false)
}
}
Класс PublishCommand существует только для этой цели привязки и проверки данных. Количество таких классов взорвалось, по 1 создано для каждого действия приложения. Вопрос, есть ли способ, которым я могу иметь эту PublishCommand как innerClass? Или другие способы, где мне не нужно создавать так много классов?
1 ответ
Решение
Довольно распространенная практика - помещать классы объектов команды в тот же файл.groovy, что и контроллер (после класса контроллера). Это поможет сократить количество файлов, которыми вы должны управлять. В противном случае вы следуете передовой практике (из того, что вы описали).