java.lang.RuntimeException No se puede encontrar el FacesContext

No sé cómo continuar, pero siempre me sale el «java.lang.RuntimeException: No se puede encontrar FacesContext» para mi nueva JSF 1.2 de la aplicación web. Estoy seguro de que es sólo un poco de configuración, no puedo encontrar.

La excepción se produce con la primera f: o h: etiqueta. Ya con la importante <f:view> al principio.

Mi index.jsp

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<f:view>
<html>
    <head>
        <title>MyWebsite</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">
    </head>
    <body>
        <div>MyContent</div>
    </body>
</html>
</f:view>

Mi web.xml se parece a esto:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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-app_2_5.xsd">
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.jsp</param-value>
    </context-param>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>720</session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

Y luego también tengo una faces-config.xml que debe hacer referencia a myBean quiero usar después en el cuerpo de la página:

<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="1.2" 
              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">
    <application>
        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
    </application>

    <managed-bean>
        <managed-bean-name>myClassName</managed-bean-name>
        <managed-bean-class>
            com.company.className
        </managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
</faces-config>

Lo que me estoy perdiendo aquí?

OriginalEl autor FiveO | 2013-05-03

1 Kommentar

  1. 7

    java.lang.RuntimeException: Cannot find FacesContext

    Por lo tanto, el JSF <f:xxx> y <h:xxx> etiquetas se están quejando de que FacesContext no puede ser encontrado. El FacesServlet es el responsable de crear las caras de contexto. Las caras servlet se invoca cuando la URL de la petición coincide con el patrón de URL, que es en su caso particular *.jsf. Así, cuando se abre la index.jsp como http://localhost:8080/context/index.jsp, o están confiando en la <welcome-file>, entonces usted no está invocando las caras servlet y de verdad se consigue esta excepción.

    Usted necesita para abrir el index.jsp como http://localhost:8080/context/index.jsf, o para establecer la bienvenida archivo de entrada para index.jsf con el fin de poder invocar la faces servlet, por lo que puede crear las caras contexto que es requerido por los componentes JSF declarado en la página JSP.

    Nota, sin embargo, que sólo la fijación de la recepción de archivos no es suficiente en este JSF 1.x + Tomcat medio ambiente. También deberá proporcionar una físicamente existente, pero completamente vacío index.jsf archivo junto a la index.jsp en el archivo de contenidos web en el fin de engañar a Tomcat que index.jsf realmente existe como archivo bienvenida. De lo contrario podría mostrar un error 404 porque comprueba la presencia física del archivo bienvenida de antemano.

    Véase también:


    No relacionados para el problema concreto, me pregunto por qué estás utilizando JSP si has aparentemente instalado Facelets 1.x y registró su vista controlador. Facelets es mucho superior a JSP.

    Sí tienes razón, veo que hemos utilizado (en otro proyecto web) también una página de inicio con .jsf sufijo y, a continuación, simplemente redirigir a el .las páginas jsp. Bueno, yo todavía no realmente tener una idea de JSF de todos modos – estoy acostumbrado a HTML y me gustaría seguir utilizando la sintaxis – como tengo un 100% de control sobre el código, el usuario está haciendo. Así que voy a seguir con .jsp y olvidarse de jsf.
    stackoverflow.com/a/4424775 En pocas palabras: JSF elimina la necesidad de escribir todo lo que HTML/CSS/JS ti mismo (solo tienes que aprender a que HTML de salida de los componentes JSF generar de modo que usted puede tomar fácilmente la derecha) y también elimina la necesidad de recoger manualmente los valores enviados, convertir/validar y poner como frijol propiedades y idenfity e invocar el método de acción. Que al final terminan con un archivo JSP como «ver» y un javabean como «modelo». En otras palabras, terminará con menos código.
    Yo, sin embargo debe admitir que ÉSTA es una terrible visión de la tecnología y hace JSF 1.x innecesariamente dolorosa. Véase también stackoverflow.com/a/3646940
    Menos código para el desarrollador, pero el navegador tendrá que manejar el código generado. Por lo que este «menos código» implica menos control, la 3ª parte de las dependencias y en el extremo de producir frustración en caso de problemas o personalizaciones. Pero muchas gracias por los comentarios – tal vez yo debería mirar en la versión avanzada como el 2.X+.
    El código generado es HTML. Navegador tenga que «asa» es usted el uso de JSF o no. En general, cualquier marco le dará ‘menos control’, JSF, EJB, JPA, etc. Sin embargo, la mayoría de el tiempo que le dan una manera de hacer las cosas «manualmente». Con JSF puede escribir siempre puro HTML/CSS/JS, o crear sus propias etiquetas personalizadas/componentes. Usted no necesita la 3ª parte de la dependencia, sólo el uso puro de Java EE se ejecuta en un Servidor de Aplicaciones Java, como Glassfish, JBoss as o WebSphere. De la OMI, la frustración es tener que reinventar la rueda una y otra vez, en lugar de centrarse en los negocios de código.

    OriginalEl autor BalusC

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea