Liferay的Tomcat说JSP文件丢失了

时间:2012-06-14 15:34:55

标签: jsp liferay portlet tomcat7 liferay-6

我正在使用Liferay的最新社区版本,即6.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'apasététrouvé           在org.apache.jasper.servlet.JspServlet.handleMissingResource(JspServlet.java:412)           at 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.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:113)           在com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:70)           在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)           在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)           在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)           at com.liferay.portlet.PortletRequestDispatcherImpl.dispatch(PortletRequestDispatcherImpl.java:316)           at 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)

2 个答案:

答案 0 :(得分:0)

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

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

上的部分。

答案 1 :(得分:0)

如果您的文件位于/WEB-INF/jsp/EditorPortlet.jsp,则必须发送到该文件,而不是/jsp/EditorPortlet.jsp - 您是否尝试过?

根据您转发的上下文,它可能与jsp/EditorPortlet.jsp一起使用(请注意缺少的根斜杠,只是为了尝试解释它之前可能有效的原因)

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

我已经看到tomcat甚至在Windows上尊重文件名的大小写。由于我已经不再在Windows上开发很长一段时间了,我不在乎行为是否可配置,但鉴于Windows不尊重大写,将名称更改为“同名”并不容易“使用不同的大写字母(当时我必须完全重命名文件,然后将其重命名为正确的大写字母)。