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

HTTP Status 500 – Internal Server Error - na validação dos campos obrigatórios do projeto: casadocodigo/produtos/form

Não consigo resolver o problema de HTTP Status 500 – Internal Server Error

Root Cause

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

ja pesquisei em outros tópicos como resolvido este problema e outros relacionados e nenhum deles consegui solucionar..

HTTP Status 500 – Internal Server Error
Type Exception Report
Message An exception occurred processing [/WEB-INF/views/produtos/form.jsp] at line [16]
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
org.apache.jasper.JasperException: An exception occurred processing [/WEB-INF/views/produtos/form.jsp] at line [16]

13:     <div>
14:         <label>Título</label> 
15:         <input type="text" name="titulo" />
16:         <form:errors path="produto.titulo" />
17:     </div>
18:     <div>
19:         <label>Descrição</label>

Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:625)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:514)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:170)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:314)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1325)
    org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1069)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1008)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:877)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

Root Cause

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

Oi amigo, No seu projeto você tem os arquivos abaixo?

messages.properties
messages_en_US.properties
messages_pt_BR.properties

Todas soluções apresentadas no forum eu ja tentei.

Inclusive os tês arquivos no diretorio WEB-INF em outro diretorio mudando o path no AppWebConfiguration.

Para não ficar parado no curso retirei todas as validações do campos de input do form ex:

 <form:errors path="titulo" />

E todas as outras tags foram removidas para conseguir da continuidade.

Assim quando não tem todas informações da um refresh e volta para o formulário sem cadastrar o produto, contudo o ideal seria apresentar para o usuário que ele esqueceu algo do formulário o que não é possível por ter removido a função de validação.

Eu acredito que tem algo relacionado com o método:

ReloadableResourceBundleMessageSource

ou alguma anotação como sugerido no forum

@Bean(name="messageSource")

ou dependência no xml, contudo baixei o projeto e copiei as classes, icluí essa anotação, copiei os jsp, copiei o messages.propeties e as dependências do xml e também não rodou.

A configuração do seu message source está conforme abaixo?

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

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

    return messageSource;
}

Se não rolar, sobe seu projeto no github e posta o link aqui pra eu dar uma olhada, por favor.

Segue link:

https://github.com/cleberleao/casadocodigo

solução!

Oi Cleber, tudo bem?

Analisando seu código, o message.properties está no diretório correto, porém está nomeado errado. No seu projeto os arquivos de mensagem estão com nome "messages.propeties" enquanto o correto é "messages.properties"

Também estão errados: "messages_en_US.propeties" e "messages_pt_BR.propeties"

Abraço!

Essa é a vida de programador onde um "r" faz uma diferença enorme!!

Obrigado pela correção! Estou na parte do curso onde iria manipular muitas informações (idioma) neste messages.properties!

Grato!