Вы создали свой портлет с помощью скрипта create.sh
от Liferay?В этом случае нам потребуется создать новый класс портлета, который расширяет MVCPortlet
:
public class ArrayPortlet extends MVCPortlet {
}
Кроме того, вам придется изменить файл WEB-INF/portlet.xml
, чтобы он указывал на его класс.Замените строку ниже на
<portlet-class>com.liferay.util.bridges.mvc.MVCPortlet</portlet-class>
на имя класса вашего портлета:
<portlet-class>br.com.seatecnologia.arrayportlet.ArrayPortlet</portlet-class>
Это просто настройка.Теперь классная часть: код!Вы должны создать метод для обработки представления портлета.Этот метод должен называться doView()
и имеет два параметра: a RenderRequest
и a RendertResponse
.Кроме того, он генерирует некоторые исключения и делегирует рендеринг портлета методу суперкласса:
public void doView(RenderRequest renderRequest, RenderResponse renderResponse)
throws IOException, PortletException {
super.doView(renderRequest, renderResponse);
}
Однако перед рендерингом портлета мы создаем наш массив:
String[] array = new String[] { "foo", "bar", "baz" };
и помещаем его вRenderRequest
полученный как параметр.Вы должны дать имя параметру - в данном случае это имя "my-array"
:
renderRequest.setAttribute("my-array", array);
Это наш класс, завершено:
public class ArrayPortlet extends MVCPortlet {
@Override
public void doView(RenderRequest renderRequest, RenderResponse renderResponse)
throws IOException, PortletException {
String[] array = new String[] { "foo", "bar", "baz" };
renderRequest.setAttribute("my-array", array);
super.doView(renderRequest, renderResponse);
}
}
Это через RenderRequest
объект, который мы передаем значения в JSP.Теперь в JSP мы должны «импортировать» экземпляр RenderRequest
(и другие объекты), добавив тег <portlet:defineObjects />
в начало JSP.После этого мы можем получить любой атрибут объекта renderRequest
через его имя.Обратите внимание, что метод getAttribute()
возвращает Object
, поэтому вы должны привести его возвращаемое значение к правильному типу:
<portlet:defineObjects />
<%
String[] anArrayFromMyPortlet = (String[])renderRequest.getAttribute("my-array");
%>
Теперь вы просто используете полученный объект по своему желанию:
<ul>
<% for (String string : anArrayFromMyPortlet) { %>
<li><%= string %></li>
<% } %>
</ul>
Это результат этого кода на моей машине: