В зависимости от того, как вы запускаете проверку с помощью плагина, я думаю, что самый простой способ - написать собственный валидатор на вашем доменном объекте. Дополнительная информация: http://grails.org/doc/latest/ref/Constraints/validator.html
Если вы не хотите (или не можете) идти по этому маршруту, вы можете вручную проверить валидацию по плагину в вашем контроллере. В основном это будет тот же шаблон, который используют страницы / контроллеры Grails.
В вашем контроллере вы можете проверить с помощью своего плагина, и если экземпляр домена не подтвердит, вы перенаправите пользователя обратно к действию редактирования и добавите «params». Таким образом, все поля будут по-прежнему заполнены, как и прежде.
Обновленный фрагмент из контроллера Grails (для объекта домена с именем Tag):
// ...
// Code above here just gets the domain object to edit (tagInstance in this case)
// and checks that the object hasn't be updated in the meantime
tagInstance.properties = params
// params have been applied to object, you can now do custom validation
def status = extraValidationService.validate( tagInstance ) // or however you run the validation
if ( !status ) {
flash.message = "Did not pass custom validation"
render(view: "edit", model: [tagInstance: tagInstance]) // Back to same edit page (field values maintained)
return
}
// Everything below here is unchanged
if ( !tagInstance.save( flush: true, failOnError: false ) ) {
render(view: "edit", model: [tagInstance: tagInstance])
return
}
flash.message = message(code: 'default.updated.message', args: [message(code: 'tag.label', default: 'Tag'), tagInstance.id])
redirect(action: "show", id: tagInstance.id) // This is where you redirect to the manageTemplate action.gsp
Это не даст вам подсветку проверки для полей, которые не прошли проверку. Чтобы получить это, вы можете либо использовать пользовательский метод проверки, либо вы можете (я этого никогда не делал) вручную 'сообщать' объекту домена, какие поля не прошли проверку и почему.