Onde definir o arq. properties

Olá pessoal,

estou com uma duvida onde definir o arquivo properties.

contexto
src
br.com.teste
MessageResource.properties
Teste.java

pages
index.jsp

Minha duvida pois no arq. java está dando erro pois não encontra esse arquivo
na hora de montar a pagina, pois deixei o arq. properties junto com os arquivos
java no src e build.

Se alguem puder me ajudar agradeceria.

–struts


  <!-- Definições das mensagens dos arquivos de Recursos-->
    <message-resources parameter="MessageResources" />

</struts-config>

properties

cursos.titulo=Alterar Cursos
cursos.idcurso = Código
cursos.curso=Curso
cursos.alterar=Alterar
cursos.cancelar=Cancelar

SEVERE: Servlet.service() for servlet jsp threw exception
javax.servlet.jsp.JspException: Missing message for key "cursos.titulo" in bundle "(default bundle)" for locale pt_BR
	at org.apache.struts.taglib.bean.MessageTag.doStartTag(MessageTag.java:233)
	at org.apache.jsp.pages.alterarcursos_jsp._jspx_meth_bean_005fmessage_005f0(alterarcursos_jsp.java:287)
	at org.apache.jsp.pages.alterarcursos_jsp._jspx_meth_html_005fform_005f0(alterarcursos_jsp.java:215)
	at org.apache.jsp.pages.alterarcursos_jsp._jspx_meth_html_005fhtml_005f0(alterarcursos_jsp.java:176)
	at org.apache.jsp.pages.alterarcursos_jsp._jspService(alterarcursos_jsp.java:92)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691)
<br>
&lt;html:form action="salvarCurso.do"  method="post"&gt;

&lt;html:hidden property="idcurso" name="alterarCursoBean"/&gt;
&lt;h3&gt;&lt;bean:message key="cursos.titulo"/&gt;&lt;/h3&gt;
&lt;table border="0"&gt;
    &lt;tr&gt;
        &lt;td align="right"&gt;idcurso:&lt;/td&gt;
        &lt;td align="left"&gt;<b>&lt;bean:write property="idcurso" name="alterarCursoBean"/&gt;</b>&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;

alterei no struts-config

mas mesmo assim deu erro :

–struts


type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

javax.servlet.ServletException: Exception in JSP: /pages/alterarcursos.jsp:16

13: &lt;head&gt;
14:         &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
15:         &lt;LINK href="estilo.css" type="text/css" rel="stylesheet"&gt;
16:         &lt;title&gt;&lt;bean:message key="cursos.titulo"/&gt;  &lt;/title&gt;
17: &lt;/head&gt;
18: &lt;body&gt;
19: 


Stacktrace:
	org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause 

org.apache.jasper.JasperException: Exception in JSP: /pages/alterarcursos.jsp:16

13: &lt;head&gt;
14:         &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
15:         &lt;LINK href="estilo.css" type="text/css" rel="stylesheet"&gt;
16:         &lt;title&gt;&lt;bean:message key="cursos.titulo"/&gt;  &lt;/title&gt;
17: &lt;/head&gt;
18: &lt;body&gt;
19: 


Stacktrace:
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:451)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:355)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113)
	org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
	org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
	org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
	org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
	org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
	org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
	org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause 

javax.servlet.ServletException: Missing message for key "cursos.titulo" in bundle "(default bundle)" for locale pt_BR
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:841)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:774)
	org.apache.jsp.pages.alterarcursos_jsp._jspService(alterarcursos_jsp.java:99)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113)
	org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
	org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
	org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
	org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
	org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
	org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
	org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause 

javax.servlet.jsp.JspException: Missing message for key "cursos.titulo" in bundle "(default bundle)" for locale pt_BR
	org.apache.struts.taglib.bean.MessageTag.doStartTag(MessageTag.java:233)
	org.apache.jsp.pages.alterarcursos_jsp._jspx_meth_bean_005fmessage_005f0(alterarcursos_jsp.java:210)
	org.apache.jsp.pages.alterarcursos_jsp._jspx_meth_html_005fhtml_005f0(alterarcursos_jsp.java:172)
	org.apache.jsp.pages.alterarcursos_jsp._jspService(alterarcursos_jsp.java:92)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113)
	org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
	org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
	org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
	org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
	org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
	org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
	org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


note The full stack trace of the root cause is available in the Apache Tomcat/5.5.25 logs.


--------------------------------------------------------------------------------

Apache Tomcat/5.5.25

tenta trocar o nome do teu arquivo para MessageResources.properties

os meus messages bundle estão na raiz da package e estão OK :slight_smile:

mas está com esse nome :

MessageResources.properties

e criei um diretorio em baixo da cdiretorio classes com o nome resource
e coloquei o arquivo lá MessageResources.properties

mas está dando erro mesmo assim …

–struts


    &lt;!-- Definições das mensagens dos arquivos de Recursos--&gt;
    &lt;message-resources parameter="resource.MessageResources"/&gt;

–erro

WARNING:   Resource resource/MessageResources_pt_BR.properties Not Found.
15/01/2008 17:32:21 org.apache.struts.util.PropertyMessageResources loadLocale
WARNING:   Resource resource/MessageResources_pt.properties Not Found.
15/01/2008 17:32:21 org.apache.struts.util.PropertyMessageResources loadLocale
WARNING:   Resource resource/MessageResources.properties Not Found.

renomeie o teu arquivo pra MessageResources_pt.properties

mesmo erro …

Cara, existe o recurso ResourceBundle que você pode localizar o recurso no seu path. Veja este link, acho que isso te ajuda: http://www.exampledepot.com/egs/java.text/LocMsg.html

No meu está acontecendo a mesma coisa, o mesmo erro

javax.servlet.ServletException: org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: Missing message for key "welcome.title" in bundle "(default bundle)" for locale pt_BR org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449) javax.servlet.http.HttpServlet.service(HttpServlet.java:690) javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
Acontece que eu entrei no site, acredito que entendi como funciona. Daí, criei mais dois arquivos, agora eu tenho no meu src
[list]MessageResources_en.properties[/list][list]MessageResources_pt.properties[/list][list]MessageResources.properties[/list]
E o meu struts-config continua igual:

    <message-resources parameter="MessageResources" />

O meu projeto foi importado do struts-blank, versão 1.38. O Tomcat que estou utilizando é o 6.0.14.
Agradeço sugestões, já que nada está adiantando.

não sei se foi isso mas criei uma outra workspace

e criei outro projeto nessa workspace e começou a funcionar

se quiser tentar isso …

abs

Acredito que isso seja um bug, o lugar está trocado:

https://issues.apache.org/struts/browse/STR-2227

Resolvi:

O Eclipse, por padrão, deixa as classes e os resource bundles definidos no /projeto/build/classes
Eu coloquei no /projeto/WEB-INF/classes e agora está funcionando perfeitamente

amigo, como vc concertou? diga passo a passo, por favor…

[quote]Resolvi:

O Eclipse, por padrão, deixa as classes e os resource bundles definidos no /projeto/build/classes
Eu coloquei no /projeto/WEB-INF/classes e agora está funcionando perfeitamente[/quote]

Para fazer essa modificação:
Clique com botão direito sobre seu projeto / Build Path / Configure Build Path
e na aba Source em Default output folder coloque: “seu projeto”/WEB-INF/classes

[quote=DouglasRolins]Para fazer essa modificação:
Clique com botão direito sobre seu projeto / Build Path / Configure Build Path
e na aba Source em Default output folder coloque: “seu projeto”/WEB-INF/classes[/quote]
Nossa DouglasRolins, desenterrou o tópico hein!!! ehuaehuaehe
Na verdade ele também cria um diretório chamado WebContent, então fica assim:

Clique com botão direito sobre seu projeto / Build Path / Configure Build Path
e na aba Source em Default output folder coloque: “seu projeto”/WEB-INF/WebContent/classes

:smiley: hehe. pois é, estou começando agora e enfrentei esse problema e decidi responder para ajudar alguém que também teve essa dificulade,
mais valeu.