Я столкнулся с некоторыми проблемами при написании пользовательских валидаторов (команд) в grails 3.3.3. В частности, я пытаюсь проверить запрос POST, тело которого состоит из списка элементов. Это то, что у меня...
Команда:
class VoteCommand implements Validateable {
List<VoteItem> postList = [].withLazyDefault { new ListItem() }
static constraints = {
postList nullable: false
}
class ListItem implements Validateable {
String tag
String some_id
static constraints = {
some_id nullable: false, blank: false
tag nullable: false, blank: false
tag inList: Tag.values() as List
}
}
}
И полезная нагрузка:
{
"noteVotesButWorks": [
{
"tag": "good"
},
{
"tag": "bad"
}
]
}
Эта полезная нагрузка проходит проверку в моем действии контроллера.
def save(VoteCommand command) {
println(command.errors) //grails.validation.ValidationErrors: 0 errors
if (command.hasErrors()) {
respond params.errors, view: 'create'
} else {
withFormat {
'*' { render status: CREATED }
}
}
}
После выполнения POST-запроса к этому действию я получаю 201
и grails.validation.ValidationErrors: 0 errors
, напечатанные на стандартный вывод.
Пожалуйста, может кто-нибудь здесь дать мне несколько указателей?
respond params.errors
. Вы намеревалисьrespond command.errors
? - person Jeff Scott Brown   schedule 11.04.2018withFormat
, в котором есть только 1 случай, который является подстановочным знаком'*'
, поэтомуwithFormat
ничего вам не покупает. Вы можете просто сделать тело вашего блокаelse
render status: CREATED
без приспособленияwithFormat
и при этом вести себя точно так же. - person Jeff Scott Brown   schedule 11.04.2018