Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Não está aparecendo minhas mensagens de erro

Boa tarde pessoal,

eu fiz tudo conforme o professor ensinou, mas na hora que clico em cadastrar ele não mostra as mensagens de que ali é obrigatório preencher, fica apenas em branco, alguém conseguiria me ajudar ?

meu form.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Livros de Java, Android, iPhone, Ruby, PHP e muito mais -
    Casa do Código</title>
</head>
<body>
    <form action="/OlaPessoal/produtos" method="post">
        <div>
            <label>Título</label> <input type="text" name="titulo" />
            <form:errors path="produto.titulo" />

        </div>
        <div>
            <label>Descrição</label>
            <textarea rows="10" cols="20" name="descricao"></textarea>
            <form:errors path="produto.descricao" />
        </div>
        <div>
            <label>Páginas</label> <input type="text" name="paginas" />
            <form:errors path="produto.paginas" />
        </div>
        <div>
            <label>Data de Lançamento</label> <input type="text"
                name="dataLancamento" />
            <form:errors path="dataLancamento" />
        </div>

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


        <button type="submit">Cadastrar</button>
    </form>

</body>
</html>
7 respostas

meu message.properties

field.required = Campo é obrigatório
field.required.produto.titulo = O Campo título é obrigatório
field.required.produto.paginas = Informe o número de páginas
field.required.produto.descricao = O Campo descrição é obrigatório
typeMismatch = O tipo de dado foi inválido
typeMismatch.produto.paginas = Digite um valor válido. Exemplo: "100"

minha classe AppWebconfiguration.java

@Bean
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("/WEB-IF/messages");
        messageSource.setDefaultEncoding("UTF-8");
        messageSource.setCacheSeconds(1);

        return messageSource;

Minha classe ProdutoValidation.java

package br.com.casadocodigo.loja.validation;

import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;

import br.com.casadocodigo.loja.models.Produtos;

public class ProdutoValidation implements Validator {

    public void valida(Produtos produto, Errors errors) {

    }

    @Override
    public boolean supports(Class<?> clazz) {
        return Produtos.class.isAssignableFrom(clazz);
    }

    @Override
    public void validate(Object target, Errors errors) {

        ValidationUtils.rejectIfEmpty(errors, "titulo", "field.required");
        ValidationUtils.rejectIfEmpty(errors, "descricao", "field.required");


        Produtos produto = (Produtos) target;

        if (produto.getPaginas() <= 0) {
            errors.rejectValue("paginas", "field.required");
        }

    }

}

Minha ProdutosController.java

    @RequestMapping(method = RequestMethod.POST)
    public ModelAndView gravar(@Valid Produtos produto,  BindingResult result, RedirectAttributes redirectAttributes) {

        if (result.hasErrors()) {
            return form ();
        }

        produtoDao.gravar(produto);
        redirectAttributes.addFlashAttribute("sucesso", "Produto cadastrado com sucesso!");
        return new ModelAndView("redirect:/produtos");
    }

Desde já agradeço pessoal, abraços!

Oi Adriely estou com o mesmo problema,mas me tira uma duvida por que você não fez o <%@ taglib uri="http://www.springframework.org/tags" prefix="s" %> no form.jsp Se você conseguir resolver poderia mandar aqui para me ajudar tbm Agradeço desde já

E tbm seria bom você confirmar se no AppWebconfiguration.java seu messageSource.setBasename("/WEB-IF/messages"); está com o mesmo nome q o arquivo que você criou por que vi q aqui no post você escreveu message.properties e no codigo está messages.

Oi João, boa noite

eu não encontrei o erro, eu baixei o projeto da aula, mas me trás o mesmo erro, mesmo meu código estando igual o do professor.

você conseguiu encontrar o erro ?

abraços.

Pior que também não ja pedi ajuda aos universitarios kkk mas nem eles conseguiram encontrar o erro...

solução!

eu tive o erro apresentado pelo pessoal

org.springframework.context.NoSuchMessageException: No message found under code 'field.required' for locale 'pt_BR'.

apenas copie o arquivo messages.properties e renomeei a copia com enUS e ptBR o resultado ficou assim - messages.properties messages_en_US.properties, messages_pt_BR.properties e tudo voltou a funfa aqui :).

lembrando que o messages.properties tem que ter o "S" para que o messageSource.setBasenames("/WEB-INF/messages") consiga encontra suas mensagens.