0

我正在使用 Liferay6.1.0-ce-ga1 和Tomcat 7.

从这个版本开始,当我部署我的 Liferay portlet 时,我经常会收到这个错误。

我错过了什么吗?对于不会讲法语的人,它基本上说 JSP 文件丢失了。

信息:

  • 我的 JSP 文件位于/jsp/EditorPortlet.jsp
  • 使用调度程序时,我使用/jsp/EditorPortlet.jsp作为路径
  • 我不会每次都收到这个错误。如果我重新部署我的 .war,有时它可以解决问题。

相关代码:

PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(
            "/jsp/EditorPortlet.jsp"");
rd.include(request, response);

错误 [render_portlet_jsp:154] javax.servlet.ServletException: Le fichier "/jsp/EditorPortlet.jsp" n'a pas été trouvé 在 org.apache.jasper.servlet.JspServlet.handleMissingResource(JspServlet.java:412) 在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379) 在 org.apache.jasper.servlet.JspServlet.service (JspServlet.java:334) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 在 org.apache.catalina。 core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:72) 在 com.liferay.portal.kernel.servlet.filters。 com.liferay.portal.kernel.servlet.filters.invoker 上的调用者.InvokerFilterChain.doFilter(InvokerFilterChain.java:113)。InvokerFilter.doFilter(InvokerFilter.java:70) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org .apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684) 在 org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:593) 在 org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher .java:530) 在 com.liferay.portlet.PortletRequestDispatcherImpl.dispatch(PortletRequestDispatcherImpl.java:316) 在 com.liferay.portlet.PortletRequestDispatcherImpl.include(PortletRequestDispatcherImpl.java:134) 在 com.gui.portlet.Portlet.doViewPortlet( Portlet.java:194) 在 com.gui.portlet.Portlet.doView(Portlet.java:148) 在 com.app.management.model.server.portlet.Portlet.doView(Portlet.java:35) 在 javax.portlet.GenericPortlet.doDispatch (GenericPortlet.java:328)

4

2 回答 2

0

如果您的文件在 中/WEB-INF/jsp/EditorPortlet.jsp,您必须发送到该文件,而不是/jsp/EditorPortlet.jsp- 您尝试过吗?

根据您转发的上下文,它可能适用jsp/EditorPortlet.jsp(请注意缺少的根斜线,只是为了尝试解释为什么它可能更早地起作用)

而且,可能不是这里的情况,但为了完整性,正如我从远古时代记得的那样:

即使在 Windows 上,我也见过 tomcat 尊重文件名的大写。由于我已经有一段时间不再在 Windows 上开发了,所以我不在乎行为是否可配置,但鉴于 Windows 不支持大写,将名称更改为“同名”并不容易" 使用不同的大写字母(当时我必须完全重命名文件,然后将其重命名为正确大写的名称)。

于 2012-06-15T08:10:09.647 回答
0

通过查看异常跟踪,我认为您已经创建了一个 portlet,并且在该特定 portlet 的 Portlet.java 类的doView()方法中,您将请求转发到EditorPortlet.jsp,该请求未创建或丢失。

如果您没有直接转发请求,那么您必须将该部分作为一个放在 portlet.xml 中init-param (view-template)

于 2012-06-14T16:56:58.717 回答