5
respostas

Mensagens não aparecem

Olaaaa Fiz e refiz todo código porém as mensagens não aparecem no formulário gostaria de uma ajuda já fiz de tudo mais não vai Já vi o arquivos properties, já revi senao escrevi errado no método setBasename Alguém poderia me ajudar

Obs: O message properties está dentro de WEB-INF

messages.properties:

field.required = Campo obrigatário
field.required.produto.titulo = O titulo é obrigatóriorio
field.required.produto.paginas = O campo páginas é obrigatorio
field.required.produto.descricao = O campo descrição é obrigatório
typeMismatch = o tipo do dado é inválido

AppWebConf

@Bean
     public MessageSource messageSource() {
         ReloadableResourceBundleMessageSource messageSource =
                 new ReloadableResourceBundleMessageSource();

         messageSource.setBasename("/WEB-INF/messages");
         messageSource.setDefaultEncoding("UTF-8");
         messageSource.setCacheSeconds(1);

         return messageSource;
     }

ProdutoController

@RequestMapping("method=RequestMethod.POST")
    public String gravar(@Valid Produto produto, BindingResult result, RedirectAttributes redirectAttributes){
        if(result.hasErrors()){
            return forma();
        }
        dao.gravar(produto);
        redirectAttributes.addFlashAttribute("sucesso", "Produto adicionado com sucesso!");
        return "redirect:/produtos";
    }

Form

<form:form action="/novoprojeto/produtos" method="post" commandName="produto">
        <div>
            <label>Título: </label> <input type="text" name="titulo">
            <form:errors path="titulo" />
        </div>
        <br />
        <div>
            <label>Descrição: </label><br />
            <textarea rows="5" cols="50" name="descricao"></textarea>
            <form:errors path="descricao"/>
        </div>
        <br />
        <div>
            <label>Número de páginas: </label> <input type="text" name="paginas" />
            <form:errors path="paginas" />
        </div>

        <c:forEach items="${tipos}" var="tipoPreco" varStatus="status">
            <label>${tipoPreco}</label>
            <input type="text" name="precos[${status.index}].valor">
            <br />
            <input type="hidden" name="precos[${status.index}].tipo"
                value="${tipoPreco}">
        </c:forEach>



        <input type="submit" value="Cadastrar">

    </form:form>
5 respostas

Oi Rodrigo,

No bindingResult tem um método chamado getAllErrors. De maneira simples, da um sysout nele e confere as chaves de erros que ele exibe. Eu geralmente faço assim quando as mensagens não são exibidas do jeito que eu quero.. muitas vezes é um erro simples.

O que aparece é essa mensagem através desse método

[Field error in object 'produto' on field 'paginas': rejected value []; codes [typeMismatch.produto.paginas,typeMismatch.paginas,typeMismatch.int,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [produto.paginas,paginas]; arguments []; default message [paginas]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'int' for property 'paginas'; nested exception is java.lang.NumberFormatException: For input string: ""], Field error in object 'produto' on field 'titulo': rejected value []; codes [field.required.produto.titulo,field.required.titulo,field.required.java.lang.String,field.required]; arguments []; default message [null], Field error in object 'produto' on field 'descricao': rejected value []; codes [field.required.produto.descricao,field.required.descricao,field.required.java.lang.String,field.required]; arguments []; default message [null], Field error in object 'produto' on field 'paginas': rejected value [0]; codes [field.required.produto.paginas,field.required.paginas,field.required.int,field.required]; arguments []; default message [null]]

Sinceramente não sei o que pode ser

As chaves estão iguais sim :). Tem como liberar o link do seu projeto no github? Posso baixar e dar uma olhada :).

Pode sim, por onde eu envio onde fica github

Oi Rodrigo,

O github é um site onde vc publica seu código, caso vc use o git como gerenciador de código. Acessa o http://github.com/ e dá uma olhada no passo a passo.