掲示板

Error "Cannot find FacesContext" (Resuelto)

thumbnail
14年前 に Pablo Guevara によって更新されました。

Error "Cannot find FacesContext" (Resuelto)

New Member 投稿: 15 参加年月日: 09/03/04 最新の投稿
Cordial Saludo,

De antemano agradezco cualquier ayuda que me puedan brindar.

El ambiente de trabajo es: Glassfish V2 con Liferay 5.2 y Netbeans 8.

Tras algun tiempo de no trabajar con Liferay y el desarrollo de portlets, me encuentro con la siguiente situacion: Estoy intentando hacer un portlet que trabaja bien hasta que invoco tags de jsf, es decir:

Si lo pongo de esta manera se desplega bien:

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

<b>
TTT - VIEW MODE
</b>

pero cuando intento hacer esto me da error:

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

<f:view>
<b>
TTT - VIEW MODE
</b>
</f:view>


Este es mi web.xml:

<?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>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>faces/welcomeJSF.jsp</welcome-file>
</welcome-file-list>
</web-app>



Me estoy volviendo loco con este error y ya no se donde consultar, por eso recurro al grupo en busca de alguna luz.

A continuacion el log del servidor:

00:54:40,614 ERROR [PortletRequestDispatcherImpl:316] org.apache.jasper.JasperException: java.lang.RuntimeException: Cannot find FacesContext
org.apache.jasper.JasperException: java.lang.RuntimeException: Cannot find FacesContext
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:418)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:427)
at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:875)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:723)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:679)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:594)
at com.liferay.portlet.PortletRequestDispatcherImpl.dispatch(PortletRequestDispatcherImpl.java:307)
at com.liferay.portlet.PortletRequestDispatcherImpl.include(PortletRequestDispatcherImpl.java:122)
at com.test.TTT.doView(TTT.java:24)
at javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:328)
at javax.portlet.GenericPortlet.render(GenericPortlet.java:233)
at com.sun.portal.portletcontainer.appengine.filter.FilterChainImpl.doFilter(FilterChainImpl.java:126)
at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:69)
at com.liferay.portlet.InvokerPortletImpl.invoke(InvokerPortletImpl.java:632)
at com.liferay.portlet.InvokerPortletImpl.invokeRender(InvokerPortletImpl.java:700)
at com.liferay.portlet.InvokerPortletImpl.render(InvokerPortletImpl.java:419)
at org.apache.jsp.html.portal.render_005fportlet_jsp._jspService(render_005fportlet_jsp.java from :1445)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:109)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:389)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:427)
at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:875)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:723)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:679)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:594)
at com.liferay.portal.util.PortalImpl.renderPortlet(PortalImpl.java:2884)
at com.liferay.portal.util.PortalUtil.renderPortlet(PortalUtil.java:897)
at com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processPortlet(RuntimePortletUtil.java:170)
at com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processPortlet(RuntimePortletUtil.java:103)
at com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processTemplate(RuntimePortletUtil.java:281)
at com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processTemplate(RuntimePortletUtil.java:190)
at org.apache.jsp.html.portal.layout.view.portlet_jsp._jspService(portlet_jsp.java from :826)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:109)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:389)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:427)
at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:875)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:723)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:679)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:594)
at com.liferay.portal.action.LayoutAction.includeLayoutContent(LayoutAction.java:294)
at com.liferay.portal.action.LayoutAction.processLayout(LayoutAction.java:471)
at com.liferay.portal.action.LayoutAction.execute(LayoutAction.java:195)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at com.liferay.portal.struts.PortalRequestProcessor.process(PortalRequestProcessor.java:157)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
at com.liferay.portal.servlet.MainServlet.callParentService(MainServlet.java:608)
at com.liferay.portal.servlet.MainServlet.service(MainServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:427)
at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:875)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:723)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:558)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:490)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:382)
at com.liferay.portal.servlet.FriendlyURLServlet.service(FriendlyURLServlet.java:143)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:427)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:333)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
at com.liferay.portal.servlet.filters.strip.StripFilter.processFilter(StripFilter.java:142)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
at com.liferay.portal.servlet.filters.theme.ThemePreviewFilter.processFilter(ThemePreviewFilter.java:121)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
at com.liferay.portal.servlet.filters.gzip.GZipFilter.processFilter(GZipFilter.java:140)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
at com.liferay.portal.servlet.filters.secure.SecureFilter.processFilter(SecureFilter.java:282)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at org.apache.ca
talina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)

Nuevamente Muchas gracias.

Slds.

Pablo Guevara
+++
14年前 に Juan Antonio Gálvez Jiménez によって更新されました。

RE: Error "Cannot find FacesContext"

Junior Member 投稿: 42 参加年月日: 09/11/19 最新の投稿
Hola, creo que te faltan algunos listeners y servlet. Pruébalo, a ver si lo haces funcionar:

<listener>
<listener-class>com.liferay.portal.kernel.servlet.PortletContextListener</listener-class>
</listener>
<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>
<servlet>
<servlet-name>portlet-jsf</servlet-name>
<servlet-class>com.liferay.portal.kernel.servlet.PortletServlet</servlet-class>
<init-param>
<param-name>portlet-class</param-name>
<param-value>org.apache.myfaces.portlet.MyFacesGenericPortlet</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>



Aquí tienes una presentación donde viene todo muy clarito, a mi sirvió para configurar mi primer portlet jsf:

http://content.liferay.com/4/docs/ppt/jsf-portlet/jsf-portlet-part-a-simple-jsf-portlet.ppt


Suerte
thumbnail
14年前 に Pablo Guevara によって更新されました。

RE: Error "Cannot find FacesContext"

New Member 投稿: 15 参加年月日: 09/03/04 最新の投稿
Juan Antonio,

Muchas gracias. Lo que hemos adelantado:

1. donde dice:
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>

debe decir:

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

2. La extension .jsp la he cambiado a .xhtml porque sino no funciona.

Con estos dos cambios ya no me arroja el error del FacesContext, pero no me muestra los campos con tags de jsf, como este:

<h:inputText id="name" required="true" styleClass="form-text" value="" />

y si lo vinculo a un bean, me da error, asi:

Campo:

<h:inputText id="name" styleClass="form-text" value="#{bean.descripcion}" />

Error:

ERROR [jsp:165] org.apache.jasper.JasperException: /WEB-INF/jsp/Bitacora_view.jsp(14,34) PWC6228: #{...} not allowed in a template text body.



Muchas gracias.

Slds.

Pablo Guevara
+++
thumbnail
14年前 に Pablo Guevara によって更新されました。

RE: Error "Cannot find FacesContext"

New Member 投稿: 15 参加年月日: 09/03/04 最新の投稿
Listo,

Al fin pude encontrar el error. Despues de leer el libro "Portlets and Apache Portals" (438 paginas) en su capitulo de JSF, encontre que se deben adicionar unas librerias que el Netbeans no coloca por defecto:

el-api.jar
el-ri.jar
jsf-api.jar
jsf-facelets.jar
jsf-impl.jar
jsf-portlet.jar

Al faces-config.xml se le debe adicionar las siguientes lineas:

<faces-config xmlns="http://java.sun.com/JSF/Configuration">
<application>
<locale-config>
<default-locale>en</default-locale>
</locale-config>
<view-handler>com.sun.facelets.FaceletPortletViewHandler</view-handler>
</application>
</faces-config>


Otro punto que considero relevante, es que cuando se crea el portlet, Netbeans crea el subdirectorio jsp, al no crear los portlets por esta opcion sino por la adicion de paginas jsf en la raiz y modificando las rutas en el portlet.xml pude lograr crear el primer portlet funcional con Netbeans 6.8.

Slds.

Pablo Guevara

+++
8年前 に Tuxtli Soto de Leon によって更新されました。

RE: Error "Cannot find FacesContext"

New Member 投稿: 1 参加年月日: 16/01/15 最新の投稿
gracias!! tu post me ah ayudado mucho, crees que pudieras postear como quedo tu web.xml por favor es que a mi aun no me resuelve el problema me sigue mandando un error.