Как передать параметры из портлета в jsp

#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>