Internacionalização JSF 1.2

1 resposta
jeverson

[i]Caros amigos,

estou inicializando meus estudos em JSF. Criei uma aplicação-exemplo retirada do livro Core JSF, porém deparei-me com um erro: a aplicação roda corretamente no Eclipse Galileo (apesar de apresentar um erro na linha 5 do meu index.jsp - “Resource bundle com.corejsf.messages cannot be found on classpath”). Contudo, quando a exporto para a pasta webapps do tomcat, no formato .war, a aplicação apresenta o seguinte erro ao ser executada:[/i]

HTTP Status 500 -

type Exception report

message

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

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 4

<html>
    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
    <f:view>   
       <f:loadBundle basename="com.corejsf.messages" var="msgs"/>
       <head>
          <link href="styles.css" rel="stylesheet" type="text/css"/>
Stacktrace:

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause
java.lang.RuntimeException: Cannot find FacesContext

javax.faces.webapp.UIComponentClassicTagBase.getFacesContext(UIComponentClassicTagBase.java:1855)

javax.faces.webapp.UIComponentClassicTagBase.setJspId(UIComponentClassicTagBase.java:1672)

org.apache.jsp.index_jsp._jspx_meth_f_005fview_005f0(index_jsp.java:104)

org.apache.jsp.index_jsp._jspService(index_jsp.java:79)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

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

Apache Tomcat/6.0.20

Esse é o meu faces-config.xml:

<?xml version="1.0"?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
	version="1.2">
	<application>
		<resource-bundle>
			<base-name>com.corejsf.messages</base-name>
			<var>msgs</var>
		</resource-bundle>
	</application>
	
	<application>
      <locale-config>
         <default-locale>pt_BR</default-locale>
   	     <supported-locale>en_US</supported-locale>
      </locale-config>
   </application>

   <managed-bean>
      <managed-bean-name>tableData</managed-bean-name>
      <managed-bean-class>com.corejsf.TableData</managed-bean-class>
      <managed-bean-scope>session</managed-bean-scope>
   </managed-bean>
</faces-config>

Index.jsp

<html>
   <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
   <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
   <f:view>   
      <f:loadBundle basename="com.corejsf.messages" var="msgs"/>
      <head>
         <link href="styles.css" rel="stylesheet" type="text/css"/>
         <title>
            <h:outputText value="#{msgs.windowTitle}"/>
         </title>
      </head>
	
	<body>
         <h:form>
            <h:dataTable value="#{tableData.names}" 
               var="name"
               captionStyle="font-size: 0.95em; font-style:italic"
					style="width: 250px;">

               <f:facet name="caption">
                   <h:outputText value="#{msgs.listing}"/>
               </f:facet>

               <h:column headerClass="columnHeader"
                  footerClass="columnFooter">
                  <f:facet name="header">
                     <h:outputText value="#{msgs.lastnameColumn}"/> 
                  </f:facet>

                  <h:outputText value="#{name.last}"/>

                  <f:facet name="footer">
                     <h:outputText value="#{msgs.alphanumeric}"/> 
                  </f:facet>
               </h:column>

               <h:column headerClass="columnHeader"
                  footerClass="columnFooter">
                  <f:facet name="header">
                     <h:outputText value="#{msgs.firstnameColumn}"/> 
                  </f:facet>

                  <h:outputText value="#{name.first}"/>

                  <f:facet name="footer">
                     <h:outputText value="#{msgs.alphanumeric}"/> 
                  </f:facet>
               </h:column>
            </h:dataTable>
         </h:form>
      </body>
   </f:view>
</html>

O web.xml foi gerado automaticamente pelo eclipse:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>05b_headersAndFooters</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
    <url-pattern>*.faces</url-pattern>
  </servlet-mapping>
</web-app>

Ao iniciar meu projeto criei um “dynamic web project” e minha estrutura de diretórios está assim:

Java Resources: src
—com.corejsf
--------TableData.java
--------Name.java
--------messages_pt_BR.properties
--------messages_en_US.properties
--------Libraries

WebContent
—WEB-INF
--------faces-config.xml
--------web.xml
—index.jsp
—styles.css

Ao mudar o linha o atributo basename da tag loadBundle do index.jsp para
“com.corejsf.messages_pt_BR”
o aviso de erro desaparece do eclipse, mas a aplicação continua não rodando ao ser acessada pelo Tomcat Manager.

Desde já agradeço a atenção!

1 Resposta

jeverson

RESOLVIDO!!!

Na verdade o problema estava no index.html, que estava faltando… :lol:

Criado 12 de agosto de 2009
Ultima resposta 12 de ago. de 2009
Respostas 1
Participantes 1