#jsp #liferay #portlet
#jsp #liferay #портлет
Вопрос:
Я пытаюсь передать параметры из a portlet
в новый jsp. Я имею в виду, view.jsp
это первая страница, которую я вижу при portlet
рендеринге. Это view.jsp
содержит отправку, в которую пользователь вставляет идентификатор. Эта отправка вызывает processAction, в котором обрабатывается идентификатор. После обработки идентификатора мне нужно передать один параметр в новый jsp (не view.jsp). Это newpage.jsp
должно быть снято после отправки.
Как я мог это сделать? Я искал решения, но с каждым днем все больше запутываюсь.
Обновить:
Да, я хочу передать параметры из моего действия процесса в JSP. Но проблемы сохраняются, и я не знаю почему. Я читал, что предлагает ваша ссылка, и я включил строки, которые рекомендует документация, чтобы заставить ее работать. Но это не работает.
Вот мой код (фаза действия):
@ProcessAction(name="obtenerExpedientesPorNIF")
public void obtenerExpedientesPorNIF(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {
//code to process the information I need to pass to the render phase (JSP)
String[] expedientes_nif = null;
for (int i=0; i<lista_expedientes.size(); i )
{
ExpedienteListItem expediente = lista_expedientes.get(i);
expedientes_nif[i] = expediente.getNumeroExpediente();
}
actionResponse.setRenderParameter("lista-expedientes", expedientes_nif);
}
И вот еще один (фаза рендеринга):
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
Insert your ID:<br><br>
<%
String string = renderRequest.getParameter("lista-expedientes");
%>
<portlet:defineObjects />
<portlet:actionURL name="obtenerExpedientesPorNIF" var="addNameUrl">
</portlet:actionURL>
<form action="${addNameUrl}" method="post">
<input name="NIF" type="text"/><br><br>
<input type="submit" value="Realizar búsqueda"/><br>
</form>
Моя среда разработки сообщает об ошибке в этой строке:
String string = renderRequest.getParameter("lista-expedientes");
Итак, какие изменения, по вашему мнению, мой код должен работать?
Ответ №1:
Я понимаю, что вы хотите передать параметры из фазы действия в фазу визуализации (чтобы они могли быть прочитаны вашим JSP). Это можно сделать с помощью параметров рендеринга. Сначала вы должны добавить параметр в свой метод действия:
actionResponse.setRenderParameter("parameter-name", "value");
а затем прочитать идентификатор в вашем методе визуализации или файле JSP:
renderRequest.getParameter("parameter-name");
В документации Liferay есть статья о передаче значений на фазу визуализации.
Ответ №2:
Поместите <portlet:defineObjects />
тег перед использованием renderRequest
переменной:
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<portlet:defineObjects />
Insert your ID:<br><br>
<%
String string = renderRequest.getParameter("lista-expedientes");
%>
Ответ №3:
Как упоминалось ниже, мы можем сделать доступными параметры фазы действия для фазы визуализации.
Класс MVCPortlet для копирования всех параметров действия непосредственно в качестве параметров визуализации. Вы можете добиться этого, установив следующий параметр инициализации в вашем portlet.xml,
XML:
<init-param>
<name>copy-request-parameters</name>
<value>true</value>
</init-param>