jsf - template - ui:composition primefaces
Las etiquetas JSF no se representan como HTML (8)
El siguiente código en web.xml
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
en lugar de faces/*
ha resuelto mi problema de etiquetas jsf no renderizadas.
Nota: *.html
causa stackoverflow
Esta pregunta ya tiene una respuesta aquí:
Estoy siguiendo el tutorial de Firstcup de Java EE usando Netbeans y Glassfish .
Cuando ejecuto el nivel web JSF me han ordenado que codifique, el navegador obtiene el mismo marcado JSF codificado en el archivo .xhtml, y las etiquetas no se representan como etiquetas HTML. Lo sé usando el código fuente de la vista en mi navegador.
Por ejemplo, para este código:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Page title here</title>
</h:head>
<h:body>
<h2>
<h:outputText value="#{bundle.WelcomeMessage}" />
</h2>
</h:body>
</html>
El navegador debería obtener algo como:
<html ...>
<head>
<title>Page title here</title>
</head>
<body>
<h2>
the welcome message goes here
</h2>
</body>
</html>
¿Derecha?
Bueno, mi navegador está recibiendo el código jsf (la primera parte del código anterior) y no el código html (la segunda parte del código anterior).
Parece ser un problema de configuración en netbeans o glassfish, pero no sé qué. ¿Algunas ideas?
Este es mi archivo web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<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>/firstcup/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>greetings.xhtml</welcome-file>
</welcome-file-list>
</web-app>
Este es mi archivo faces-config.xml:
<?xml version=''1.0'' encoding=''UTF-8''?>
<!-- =========== FULL CONFIGURATION FILE ================================== -->
<faces-config version="2.0"
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">
<application>
<resource-bundle>
<base-name>firstcup.web.WebMessages</base-name>
<var>bundle</var>
</resource-bundle>
<locale-config>
<default-locale>en</default-locale>
<supported-locale>es</supported-locale>
</locale-config>
</application>
<navigation-rule>
<from-view-id>/greetings.xhtml</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/response.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>
Además:
- La URL que estoy ingresando en el navegador es http: // localhost: 8081 / firstcup / pero también he intentado: http: // localhost: 8081 / firstcup / greetings.xhtml
- Revisé los registros de Glassfish y no hay información sobre no poder cargar FacesServlet
Gracias @ hendy-irawan
Solucioné mi problema cambiando mi encabezado faces-config
De
<?xml version="1.0" encoding="UTF-8"?>
<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">
</faces-config>
A
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
version="2.2">
</faces-config>
Puede que esto no sea relevante para usted, pero luego de horas de buscar la solución para un problema similar, mi culpable es este archivo en WEB-INF / faces-config.xml:
<?xml version="1.0"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xi="http://www.w3.org/2001/XInclude"
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"/>
Por alguna extraña razón, JBoss Tools 3.3.0.M2 puso ese archivo en mi proyecto JSF 2.0 y ¡BOOM! Nada funciona. El archivo se ve muy inocente aún (probablemente debido a la versión = "1.2") me hizo bastante frustrado.
He buscado registros (¡nada!), WEB-INF / lib, classpaths, incluso quitando dependencias y resultó ser un solo faces-config.xml :-P
Espero que esto ayude a alguien ...
SOLUCIONADO: Al cambiar el archivo de bienvenida en web.xml, se resuelve el problema a continuación:
<welcome-file-list>
<welcome-file>firstcup/greetings.xhtml</welcome-file>
</welcome-file-list>
Si las etiquetas JSF no se han analizado, significa que la solicitud no se ha transmitido a través de FacesServlet
. Ese servlet es el responsable de todas las cosas de JSF. FacesServlet
verificar si la URL de solicitud utilizada coincide con el url-pattern
de FacesServlet
. Tenga en cuenta que es sensible a las mayúsculas.
Sin embargo, esto también puede suceder si abre el archivo directamente en el navegador integrado del IDE. No deberías hacer eso. Debe especificar la URL correcta usted mismo en la barra de direcciones del navegador integrado o de un navegador externo (por ejemplo, MSIE / Firefox).
Actualización : una cosa más, ¿declaraste el taglib JSF HTML en <html xmlns>
attribtue? Lo omitiste en tu fragmento de código.
Debería verse como
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
También sufrí el problema de las jsf tags
, no procesadas. login/entry.xhtml
archivo de bienvenida en web.xml
como login/entry.xhtml
.
Cuando cambié ese archivo a faces/login/entry.xhtml
, está funcionando bien.
Debe ser debido a facesServelet
not intercepting
está not intercepting
la página. Conduce a la representación de solo HTML simple y las etiquetas jsf simplemente se ignoran.
Verifique su web.xml o su faces-config.xml. Algo obviamente falta.
editar: no sé jsf 2, pero en mi jsf 1 faces-config.xml tengo esto:
<application>
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
</application>
Tal vez deberías echarle un vistazo a esto. (podría ser una pista, lo siento, no puedo ayudar más)
edición 2: esta no es la respuesta, lo siento
Yo tuve el mismo problema. Eliminé algunos frascos de richfaces de WEB-INF / lib y JSF está funcionando ahora.