Pergunta

Alguém sabe como eu poderia ficar o fieldError para imprimir no exemplo abaixo.

para cada item, com um erro, eu gostaria de imprimir mensagens de erro personalizadas que eu tenho definido nas mensagens.propriedades do arquivo

no momento em que tudo isso é imprimir o padrão de códigos de erro

item.errors?.allErrors?.each{ 
  println it.toString() 
}

Eu tenho visto outros exemplos de onde você pode pesquisar um código de erro para um campo e.g.

it.getFieldError('title').code

mas eu gostaria de converter a mensagem padrão em minha nova mensagem de erro e a impressão.

Foi útil?

Solução

Você precisa de acesso para o messageSource de feijão, por exemplo,com

def messageSource

em seu controlador, ou de serviço.Em seguida, você pode acessar as mensagens com

def locale = Locale.getDefault()
for (fieldErrors in bean.errors) {
   for (error in fieldErrors.allErrors) {
      String message = messageSource.getMessage(error, locale)
   }
}

Outras dicas

Um pouco mais simples solução com melhor desempenho seria;

MessageSource messageSource //Inject the messageSource class

e.errors.allErrors.each {
  String message = messageSource.getMessage(it, Locale.default)
}

OU

Se você quer lidar apenas com o campo de erros:

e.errors.fieldErrors.each {
   String message = messageSource.getMessage("modified.invalid.validator.message", [it.field, 'message'] as Object[], Locale.default))
}

Onde modified.invalid.validator.message é o local de seqüência de caracteres em seu messages.properties.Neste exemplo em particular, esta mensagem diz algo como...

modified.invalid.validator.message=Property [{0}] of [{1}] does not pass validation
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top