Nano Hash - криптовалюты, майнинг, программирование

renderURL не работает на странице jsp MVCPortlet

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

вот код view.jsp портлета

<%@ taglib uri="http://java.sun.com/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
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

  • У вас есть файлы jsp непосредственно в папке docroot? Если нет, то держите jsps там 25.10.2014
  • спасибо я понял в чем проблема. файл jsp находился в docroot/html/имя_портлета/; поэтому я поместил /html/portlet_name/jsp_page в значение тега renderURL, чтобы это сработало! 25.10.2014
  • Кроме того, вы можете использовать mvcPath вместо jspPage — jspPage устарел в пользу mvcPath. 25.10.2014

Ответы:


1

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>

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

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

03.04.2016

2

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

Измените имя и повторите попытку.

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

27.10.2014
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..