嗨,我在liferay上构建一个MVCPortlet。 我使用一个view.jsp指向另外两个使用renderURL的jsp页面,但每当我点击其中一个链接时,我会在eclipse控制台中遇到异常。
这是portlet的view.jsp的代码
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<portlet:defineObjects />
<!--<jsp:include page="addNewWebSite.jsp" /> -->
<portlet:renderURL var="addNewWebSite">
<portlet:param name="jspPage" value="/addNewWebSite.jsp"/>
</portlet:renderURL>
<portlet:renderURL var="listWebSites">
<portlet:param name="jspPage" value="/listWebSites.jsp"/>
</portlet:renderURL>
<ul>
<li><a href="<%=addNewWebSite%>">Add new web site</a></li>
<li><a href="<%=listWebSites %>">List Web Site</a></li>
</ul>
我还有两个文件addNewSite.jsp和listWebSites.jsp驻留在portlet项目的同一目录中
这是堆栈跟踪。
Caused by: javax.servlet.ServletException: Le fichier "/addNewWebSite.jsp" n'a pas été trouvé
at org.apache.jasper.servlet.JspServlet.handleMissingResource(JspServlet.java:412)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:96)
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:749)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:605)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:544)
at com.liferay.portlet.PortletRequestDispatcherImpl.dispatch(PortletRequestDispatcherImpl.java:331)
at com.liferay.portlet.PortletRequestDispatcherImpl.include(PortletRequestDispatcherImpl.java:112)
... 167 more
14:18:29,497 ERROR [http-bio-8080-exec-25][render_portlet_jsp:132] null
答案 0 :(得分:0)
在您的renderURL中,您正在调用addNewWebSite.jsp
,但您的文件名为addNewSite.jsp
例外情况表明addNewWebSite.jsp
不存在。
调整其名称,然后重试。
你已经设置了render-param,指向“/addNewWebSite.jsp”,但你说你的文件名是“addNewSite.jsp”,所以,渲染器正在寻找“addNewWebSite.jsp”,但是找不到它,因为在文件夹中有“addNewSite.jsp”。
答案 1 :(得分:0)
Nwawel,我认为问题发生在<portlet:param>
标记中。
在MVCPortlet中,如果要直接从另一个JSP页面调用JSP页面,则必须将portlet命名为:param的名称为“mvcPath”,例如:
<portlet:renderURL var="varA">
<portlet:param name="mvcPath" value="/a.jsp"/>
</portlet:renderURL>
<portlet:renderURL var="varB">
<portlet:param name="mvcPath" value="/b.jsp"/>
</portlet:renderURL>
<a href="<%=varA %>">Link to A</a>
<a href="<%=varB %>">Link to B</a>
这样可以正常工作。
希望这会对你有所帮助。