-1

嗨,我在 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 &quot;/addNewWebSite.jsp&quot; 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
4

2 回答 2

1

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>

这将正常工作。

希望这会帮助你。

于 2016-04-03T13:50:00.820 回答
0

在您的 renderURL 中,您正在调用addNewWebSite.jsp但您的文件名为addNewSite.jsp 异常显示addNewWebSite.jsp不存在。

调整其中一个的名称,然后重试。

你已经设置了渲染参数,指向“/addNewWebSite.jsp”,但是你说你的文件名是“addNewSite.jsp”,所以,渲染正在寻找“addNewWebSite.jsp”,但不能找到它,因为在文件夹中有“addNewSite.jsp”。

于 2014-10-27T11:24:24.547 回答