2012-01-06 13 views
6

Estoy empezando con JSF 2.0 y estoy atascado en un problema desde el principio. Las etiquetas JSF no se analizan.Etiquetas JSF que no se procesan - ¿FacesServlet no funciona tal vez?

A continuación se presentan algunos detalles. Espero que alguien pueda ayudar porque ninguna de las preguntas relacionadas con SO ha podido resolver mi problema.

hello.jsp

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:p="http://primefaces.org/ui"> 

    <h:head> 

    </h:head> 

    <h:body> 
    <f:view> 
     asd 
     <h:inputText value="asd" label="UserName"></h:inputText> 
    </f:view> 
    </h:body> 
</html> 

Lo que veo cuando navego a http://localhost:8080/JSFDeneme/pages/hello.jsp

Sólo el texto en claro asd

Ver fuente de http://localhost:8080/JSFDeneme/pages/hello.jsp

Exactamente lo mismo que el contenido de hello.jsp

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:p="http://primefaces.org/ui"> 

    <h:head>  
    </h:head>  
    <h:body> 
    <f:view>asd 
     <h:inputText value="asd" label="UserName"></h:inputText> 
     </f:view> 
    </h:body> 
</html> 

web.xml

<?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_3_0.xsd" 
     id="WebApp_ID" 
     version="3.0"> 
    <display-name>JSFDeneme</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>hello.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>/pages/*</url-pattern> 
    <url-pattern>*.jsf</url-pattern> 
    </servlet-mapping> 
    <context-param> 
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name> 
    <param-value>resources.application</param-value> 
    </context-param> 
    <context-param> 
    <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description> 
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
    <param-value>client</param-value> 
    </context-param> 
    <context-param> 
    <description> 
    This parameter tells MyFaces if javascript code should be allowed in 
    the rendered HTML output. 
    If javascript is allowed, command_link anchors will have javascript code 
    that submits the corresponding form. 
    If javascript is not allowed, the state saving info and nested parameters 
    will be added as url parameters. 
    Default is 'true'</description> 
    <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name> 
    <param-value>true</param-value> 
    </context-param> 
    <context-param> 
    <description> 
    If true, rendered HTML code will be formatted, so that it is 'human-readable' 
    i.e. additional line separators and whitespace will be written, that do not 
    influence the HTML code. 
    Default is 'true'</description> 
    <param-name>org.apache.myfaces.PRETTY_HTML</param-name> 
    <param-value>true</param-value> 
    </context-param> 
    <context-param> 
    <param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name> 
    <param-value>false</param-value> 
    </context-param> 
    <context-param> 
    <description> 
    If true, a javascript function will be rendered that is able to restore the 
    former vertical scroll on every request. Convenient feature if you have pages 
    with long lists and you do not want the browser page to always jump to the top 
    if you trigger a link or button action that stays on the same page. 
    Default is 'false' 
</description> 
    <param-name>org.apache.myfaces.AUTO_SCROLL</param-name> 
    <param-value>true</param-value> 
    </context-param> 
    <listener> 
    <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class> 
    </listener> 
</web-app> 

caras-config.xml

<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_2_0.xsd" 
    version="2.0"> 
</faces-config> 

lo que tengo en WEB-INF/lib

  • JSF 2.0 (Apache MyFaces JSF-Core 2.0 API 2.0.2) - Eclipse descargado que
  • jstl-api-1.2.jar
  • jstl-impl-1.2. jar
  • PrimeFaces-3.0 frascos

Qué impresiones Tomcat a la consola cuando reinicio el servidor y vaya a la página

Parece impar y no se menciona FacesServlet?

06.Oca.2012 22:26:55 org.apache.catalina.core.AprLifecycleListener init 
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\glassfish3\jdk\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AMD APP\bin\x86;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\apache-ant-1.8.2\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files (x86)\QuickTime\QTSystem\;. 
06.Oca.2012 22:26:56 org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:AjaxDenemeleri' did not find a matching property. 
06.Oca.2012 22:26:56 org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:RPGW_RestAPI' did not find a matching property. 
06.Oca.2012 22:26:56 org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:JSFDeneme' did not find a matching property. 
06.Oca.2012 22:26:56 org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["http-bio-8080"] 
06.Oca.2012 22:26:56 org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 
06.Oca.2012 22:26:56 org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 680 ms 
06.Oca.2012 22:26:56 org.apache.catalina.core.StandardService startInternal 
INFO: Starting service Catalina 
06.Oca.2012 22:26:56 org.apache.catalina.core.StandardEngine startInternal 
INFO: Starting Servlet Engine: Apache Tomcat/7.0.22 
06.Oca.2012 22:26:56 com.sun.jersey.api.core.PackagesResourceConfig init 
INFO: Scanning for root resource and provider classes in the packages: 
    sample.hello.resources 
06.Oca.2012 22:26:56 com.sun.jersey.api.core.ScanningResourceConfig logClasses 
INFO: Root resource classes found: 
    class sample.hello.resources.HelloResource 
    class sample.hello.resources.ContactsResource 
06.Oca.2012 22:26:56 com.sun.jersey.api.core.ScanningResourceConfig init 
INFO: No provider classes found. 
06.Oca.2012 22:26:57 com.sun.jersey.server.impl.application.WebApplicationImpl _initiate 
INFO: Initiating Jersey application, version 'Jersey: 1.10 11/02/2011 03:53 PM' 
06.Oca.2012 22:27:00 org.apache.catalina.core.StandardContext addApplicationListener 
INFO: The listener "org.apache.myfaces.webapp.StartupServletContextListener" is already configured for this context. The duplicate definition has been ignored. 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getBooleanInitParameter 
INFO: No context init parameter 'org.apache.myfaces.RENDER_CLEAR_JAVASCRIPT_FOR_BUTTON' found, using default value false 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getBooleanInitParameter 
INFO: No context init parameter 'org.apache.myfaces.RENDER_HIDDEN_FIELDS_FOR_LINK_PARAMS' found, using default value false 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getBooleanInitParameter 
INFO: No context init parameter 'org.apache.myfaces.SAVE_FORM_SUBMIT_LINK_IE' found, using default value false 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getBooleanInitParameter 
INFO: No context init parameter 'org.apache.myfaces.READONLY_AS_DISABLED_FOR_SELECTS' found, using default value true 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getBooleanInitParameter 
INFO: No context init parameter 'org.apache.myfaces.RENDER_VIEWSTATE_ID' found, using default value true 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getBooleanInitParameter 
INFO: No context init parameter 'org.apache.myfaces.STRICT_XHTML_LINKS' found, using default value true 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getBooleanInitParameter 
INFO: No context init parameter 'org.apache.myfaces.RENDER_FORM_SUBMIT_SCRIPT_INLINE' found, using default value false 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getLongInitParameter 
INFO: No context init parameter 'org.apache.myfaces.CONFIG_REFRESH_PERIOD' found, using default value 2 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getBooleanInitParameter 
INFO: No context init parameter 'org.apache.myfaces.VIEWSTATE_JAVASCRIPT' found, using default value false 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getStringInitParameter 
INFO: No context init parameter 'org.apache.myfaces.REFRESH_TRANSIENT_BUILD_ON_PSS' found, using default value auto 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getBooleanInitParameter 
INFO: No context init parameter 'org.apache.myfaces.REFRESH_TRANSIENT_BUILD_ON_PSS_PRESERVE_STATE' found, using default value false 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getBooleanInitParameter 
INFO: No context init parameter 'org.apache.myfaces.VALIDATE_XML' found, using default value false 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getBooleanInitParameter 
INFO: No context init parameter 'org.apache.myfaces.WRAP_SCRIPT_CONTENT_WITH_XML_COMMENT_TAG' found, using default value true 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig createAndInitializeMyFacesConfig 
INFO: Tomahawk jar not available. Autoscrolling, DetectJavascript, AddResourceClass and CheckExtensionsFilter are disabled now. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator feedStandardConfig 
INFO: Reading standard config META-INF/standard-faces-config.xml 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator addClassloaderConfigurations 
INFO: Reading config : jar:file:/D:/documents/code/java/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/JSFDeneme/WEB-INF/lib/primefaces-3.0.jar!/META-INF/faces-config.xml 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator getWebAppConfig 
INFO: Reading config /WEB-INF/faces-config.xml 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: Starting up MyFaces-package : myfaces-api in version : 2.0.2 from path : file:/D:/documents/code/java/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/JSFDeneme/WEB-INF/lib/myfaces-api-2.0.2.jar 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: Starting up MyFaces-package : myfaces-impl in version : 2.0.2 from path : file:/D:/documents/code/java/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/JSFDeneme/WEB-INF/lib/myfaces-impl-2.0.2.jar 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : tomahawk not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : tomahawk12 not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : tomahawk-sandbox not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : tomahawk-sandbox12 not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : tomahawk-sandbox15 not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : myfaces-orchestra-core not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : myfaces-orchestra-core12 not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : trinidad-api not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : trinidad-impl not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : tobago not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : commons-el not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : jsp-api not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.util.ExternalSpecifications isBeanValidationAvailable 
INFO: MyFaces Bean Validation support disabled 
06.Oca.2012 22:27:00 org.apache.myfaces.config.annotation.DefaultAnnotationProvider webClasses 
WARNING: AnnotationConfigurator does not found classes for annotations in /WEB-INF/classes/ . This could happen because maven jetty plugin is used (goal jetty:run). Try configure org.apache.myfaces.annotation.SCAN_PACKAGES init parameter or use jetty:run-exploded instead. 
06.Oca.2012 22:27:00 org.apache.myfaces.application.ApplicationImpl getProjectStage 
INFO: Couldn't discover the current project stage, using Production 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator handleSerialFactory 
INFO: Serialization provider : class org.apache.myfaces.shared_impl.util.serial.DefaultSerialFactory 
06.Oca.2012 22:27:00 org.apache.myfaces.config.annotation.DefaultLifecycleProviderFactory getLifecycleProvider 
INFO: Using LifecycleProvider java.lang.String 
06.Oca.2012 22:27:01 org.apache.myfaces.webapp.AbstractFacesInitializer initFaces 
INFO: ServletContext 'D:\documents\code\java\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\JSFDeneme\' initialized. 
06.Oca.2012 22:27:01 org.primefaces.webapp.PostConstructApplicationEventListener processEvent 
INFO: Running on PrimeFaces 3.0 
06.Oca.2012 22:27:01 org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["http-bio-8080"] 
06.Oca.2012 22:27:01 org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["ajp-bio-8009"] 
06.Oca.2012 22:27:01 org.apache.catalina.startup.Catalina start 
INFO: Server startup in 4958 ms 

Cualquier ayuda apreciada.

Respuesta

11

hello.jsp

Ésta no es la extensión correcta.

Desde JSF 2.0, JSP is deprecated and replaced by Facelets. Facelets es una tecnología de visualización basada en XML y se supone que debe escribirse en los archivos .xhtml. Sin embargo, parece que ya ha utilizado la sintaxis Facelets válida en su archivo JSP. Todo lo que necesita hacer es cambiar el nombre hello.jsp al hello.xhtml.

También recomiendo reemplazar todos los patrones de URL por un solo patrón de URL *.xhtml.

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.xhtml</url-pattern> 
</servlet-mapping> 

de manera que se puedan abrir por http://localhost:8080/JSFDeneme/hello.xhtml sin tocar el violín con las direcciones URL virtuales.

No estoy seguro de qué libros/tutoriales leyó que hicieron que use la extensión JSP. Tal vez estabas leyendo una combinación de tutoriales específicos de JSF 1.x y JSF 2.x. Debe asegurarse de leer los tutoriales específicos de JSF 2.x. En la parte inferior de our JSF wiki page puede encontrar varios enlaces de tutorial JSF 2.x.

+0

Me cambió el nombre '' hello.jsp' a hello.xhtml' pero luego, cuando navego a 'http:// localhost: 8080/JSFDeneme/pages/hello.xhtml', obtengo el '¡Vaya! Este enlace parece estar roto. ¿Página? ¿Dónde debería navegar para ver la página? –

+0

Si también ha reemplazado el patrón de URL, debe eliminar '/ pages' de la URL. Ver también el ejemplo de URL en mi respuesta. – BalusC

+0

Funciona como un encanto BalusC! Muchas gracias. 2 preguntas más, ¿qué 'DOCTYPE' sugerirías? ¿O incluso sugieres usar uno? Y en segundo lugar, ¿tengo que usar la extensión '.xhtml'? ¿Puedo usar algo más como '.do' o algo arbitrario? Porque cuando la extensión de archivo es '.xhtml' y agrego otra' url-mapping', como '.jsf', no funciona. –

1

supongo que, como está invocando una URL .jsp se renderiza la página a través de la buena vieja servlet JSP (que tiene la URL /pages/* asignada al servlet caras, pero asignación de extensión JSP pueda estar tomando precedencia).

¿Puedes intentar cambiar el nombre de tu página a .jsf e invocar eso?

+0

Desafortunadamente, cambiar el nombre a '.jsf' tampoco funciona, ni' .xhtml' –

+0

Cambiar el nombre a '.jsf' no funcionará de ninguna manera. El sufijo Facelets predeterminado es '.xhtml'. – BalusC

+0

Cambié el nombre de la extensión de archivo a '.jsf' y cambié las asignaciones de URL en consecuencia. ¡Navegué hasta la página y la consola de Eclipse enloqueció! Lancé excepciones en un ciclo infinito hasta que tuve que forzarlo y cerrarlo :) –

-2

tratar de poner siguiente código en su web.xml


<?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_3_0.xsd" 

    id="WebApp_ID" version="3.0"> 

<display-name>jsfexample</display-name> 

<servlet> 

    <servlet-name>faces</servlet-name> 

    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 

    <load-on-startup>1</load-on-startup> 

</servlet> 

<servlet-mapping> 
    <servlet-name>faces</servlet-name> 

    <url-pattern>*.xhtml</url-pattern> 

</servlet-mapping> 

Cuestiones relacionadas