0

Привет, я создаю MVCPortlet на liferay. Я использую view.jsp, который указывает на две другие страницы jsp, используя renderURL, но всякий раз, когда я нажимаю на одну из двух ссылок, я получаю Exception в консоли eclipse.renderURL не работает на MVCPortlet jsp page

вот код 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, проживающих в том же каталоге портлетов проекта

здесь является трассировки стека.

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 
+0

У вас есть файлы jsp прямо под папкой docroot? Если нет, тогда держите jsps там –

+0

, спасибо, я понял, в чем была проблема. файл jsp находился в docroot/html/portlet_name /; поэтому я поместил/html/portlet_name/jsp_page в значение тега renderURL, чтобы он сработал! –

+1

Кроме того, вы можете использовать mvcPath вместо jspPage - jspPage устарел в пользу mvcPath. –

ответ

0

В вашем renderURL вы вызываете addNewWebSite.jsp, но ваш файл называется addNewSite.jsp Исключение показывает, что addNewWebSite.jsp не существует.

Отрегулируйте имя одного из них, а затем повторите попытку.

Вы установили параметр render-param, указав на «/addNewWebSite.jsp», но вы сказали, что имя вашего файла «addNewSite.jsp», поэтому рендер ищет «addNewWebSite.jsp», но не может найти его, потому что в папке есть «addNewSite.jsp».

0

Nwawel, я считаю, что проблема происходит в теге <portlet:param>.

В MVCPortlet, если вы хотите, чтобы вызвать страницу JSP непосредственно с другой страницы JSP, вы должны назвать Портлет: Имя параметра, как «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> 

Это будет работать нормально.

Надеюсь, это вам поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^