Customização de Mensagem Default Campo Lista
13/10/2015 00:22
1
Estou tentando customizar a mensagem default no "messages.properties" conforme vi que o pessoal tem utilizado.

De repente não esteja sabendo como fazer em um campo do tipo Lista.

Meu formulário é submetido um objeto Requisicao, que possui uma Lista de Serviços e cada Serviço possui uma lista de Motivos. 

Meu campo seria: Requisicao.serviços.motivos

Tentei, sem sucesso, fazer coisas do tipo: requisicao.servicos.motivos.null.error=É necessário selecionar pelo menos um Motivo por Serviço

Mas a mensagem exibida é sempre a default: 
O campo [motivos] da classe [class pacote.Servico] não pode ser vazio

class Requisicao {
?static hasMany = [servicos:Servico]
}

class Servico {
?static belongsTo = [requisicao: Requisicao]
static hasMany = [motivos:Motivo]

Na tela o campo Motivo é uma lista de checkboxs. Podendo ter mais de uma lista.
EX:
<input type="checkbox" name="servicos[0].motivos">
<input type="checkbox" name="servicos[0].motivos">

<input type="checkbox" name="servicos[1].motivos">
<input type="checkbox" name="servicos[1].motivos">
Tags: customizar mensagem lista hasmany


0
Oi Victor,

a propriedade fica como nula do lado controlador? Faça o teste imprimindo o valor da propriedade no console.


0
Sim Kico. O valor da variável "motivos" é null no Controlador.

Apesar de ser null testei com a mensagem "blank" também, mas nenhum resultado.


0
Não tenho certeza se a constraint null se aplica a atributos do tipo coleção, talvez este possa ser uma das razões.

O que ocorre: requisições vindas pela web sempre são diferentes de null, são strings vazias. Então este é o primeiro ponto a ser levado em consideração.
Uma constraint que faz mais sentido no caso de coleções é minSize, que define o número mínimo de itens a estarem presentes na coleção ou o tamanho mínimo de uma string. Já tentou com esta?


0
Pois é tenho a impressão que seja alguma questão com os atributos do tipo coleção mesmo. Mas como cai sempre na mensagem: default.null.message, imaginei que substituindo o "default" pelo meu campo seria suficiente.

Vou testar com essa constraint "minSize" e digo o que aconteceu.


0
Pois é, por essa eu não esperava rs.

Quando inseri a constraint: "motivos nullable: false, minSize: 1", continuou exibindo a mesma mensagem.

Quando removi o nullable: "motivos minSize: 1", inseriu com sucesso mesmo sem selecionar nenhum "motivo"

??????????? haha entendi nada agora. Que tenso pra customizar uma mensagem rs


0
Sobre a mensagem, não sei o que se passa.
Mas acho que esse bindng seu não está legal não. Quando você seleciona algum motivo, a coleção está preenchida quando a action é chamada?


0
Bom, acabei descobrindo de uma forma simples:

Basta debugar e ver analisar dentro do atributo "errors" presente na classe de dominio. Nesse atributo possui uma lista de erros e em cada um existe um atributo "codes" com vários tipos de identificadores possíveis para a sobrecarga de mensagens. No meu caso veio quase 50 códigos possíveis, e nunca batia com os que eu tentava pois estava utilizando null (me baseando pela mensagem padrão) e não nullable como estava presente nos "codes".

Código padrão da mensagem: "default.null.message". 
Código escolhido para customizar: "servico.motivos.nullable.error"

Problema resolvido e não tinha nenhuma relação com o campo do tipo Lista.


0
Magno, está vindo tudo preenchido normalmente (quando seleciono os motivos, obviamente).  Se tiver alguma dica com relação ao bindig pode mandar.



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto