¿Ha creado su portlet con el script create.sh
de Liferay? En este caso, tendremos que crear una nueva clase de portlets que se extiende MVCPortlet
:
public class ArrayPortlet extends MVCPortlet {
}
Además, tendrá que cambiar el archivo WEB-INF/portlet.xml
para que apunte a su clase. Vuelva a colocar la línea de abajo por
<portlet-class>com.liferay.util.bridges.mvc.MVCPortlet</portlet-class>
por uno nombramiento de su clase de portlets:
<portlet-class>br.com.seatecnologia.arrayportlet.ArrayPortlet</portlet-class>
Esto es sólo configuración. Ahora, la parte genial: ¡código! Debe crear un método para manejar la vista del portlet. Este método debe llamarse doView()
y tiene dos parámetros: un RenderRequest
y un RendertResponse
. Además, lanza algunas excepciones y delegar el portlet de representación para el método de la superclase:
public void doView(RenderRequest renderRequest, RenderResponse renderResponse)
throws IOException, PortletException {
super.doView(renderRequest, renderResponse);
}
Antes de mostrar el portlet, sin embargo, nosotros creamos nuestra matriz:
String[] array = new String[] { "foo", "bar", "baz" };
y lo ponemos en el RenderRequest
recibido como parámetro. Usted debe dar un nombre al parámetro - en este caso, el nombre es "my-array"
:
renderRequest.setAttribute("my-array", array);
Esta es nuestra clase, completa:
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);
}
}
Es a través del RenderRequest
objeto que se pasa los valores a el JSP.Ahora, en el JSP, debemos "importar" la instancia RenderRequest
(y otros objetos también) agregando la etiqueta <portlet:defineObjects />
al comienzo del JSP. Después de esto, podemos obtener cualquier atributo del objeto renderRequest
a través de su nombre. Tenga en cuenta que el método getAttribute()
devuelve Object
por lo que debe emitir su valor de retorno al tipo correcto:
<portlet:defineObjects />
<%
String[] anArrayFromMyPortlet = (String[])renderRequest.getAttribute("my-array");
%>
Ahora, usted sólo tiene que utilizar el objeto recuperado como desee:
<ul>
<% for (String string : anArrayFromMyPortlet) { %>
<li><%= string %></li>
<% } %>
</ul>
Este es el resultado de este código en mi máquina:
Solo aclaración, ¿te refieres a view.jsp? ¿Y necesitas el valor después de que se represente la página? Si es así, ¿por qué? –
Sí, quiero decir jsp. Quiero analizar el xml remoto y poner todos los datos en una matriz, y luego pasar esta matriz a view.jsp. Simplemente no quiero escribir código en jsp. Quiero usar la clase java. –