Continuamos con las peticiones de un Portlet. En el anterior post vimos como navegar entre páginas. Esto es análogo a las peticiones GET de HTTP. Lo que ahora veremos es cómo atender peticiones tipo POST que generalmente están asociadas a las peticiones de un formulario.
Similar al MVCRenderCommand del anterior post, aquí debemos crear una clase que implemente a com.liferay.portal.kernel.portlet.bridges.mvc.MVCActionCommand. Esta clase sería algo como esta:
package com.apuntesdejava.virtualclassroom.course.portlet;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletException;
import org.osgi.service.component.annotations.Component;
import com.apuntesdejava.virtualclassroom.course.constants.CoursePortletKeys;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.portlet.bridges.mvc.MVCActionCommand;
import com.liferay.portal.kernel.util.ParamUtil;
@Component(
immediate = true,
property = {
"javax.portlet.name=" + CoursePortletKeys.COURSE, //el portlet al que pertenece
"mvc.command.name=/course/update" //el nombre de esta action
},
service = MVCActionCommand.class
)
public class CourseUpdateMVCActionCommand implements MVCActionCommand {
@Override
public boolean processAction(ActionRequest actionRequest, ActionResponse actionResponse) throws PortletException {
String courseName = ParamUtil.getString(actionRequest, "name"); //recibimos un parámetro...
_log.info("nombre del curso:"+courseName); //... y lo mostramos
return true; //devolvemos true para indicar que fue satisfactorio
}
private static final Log _log=LogFactoryUtil.getLog(CourseUpdateMVCActionCommand.class);
}
Luego, en nuestro edit.jsp debemos crear el URL, usando <liferay-portlet:actionURL> que está asociado al action que acabamos de crear. El nombre del action irá en el atributo name, así:
<liferay-portlet:actionURL var="updateURL" name="/course/update">
</liferay-portlet:actionURL>
Ahora, crearemos nuestro formulario usando los tags de Liferay:
<aui:form action="<%= updateURL %>">
<aui:input name="name" label="course.name" type="text" ></aui:input>
<aui:button-row>
<aui:button type="submit" value="save"></aui:button>
<aui:button type="cancel" value="cancel" href="<%= backURL %>"></aui:button>
</aui:button-row>
</aui:form>
Todo el JSP lucirá así:
<%@ include file="init.jsp" %>
<liferay-ui:header title="course.edit" backURL="<%= backURL %>"></liferay-ui:header>
<liferay-portlet:actionURL var="updateURL" name="/course/update">
<liferay-portlet:param name="backURL" value="<%= currentURL %>"/>
</liferay-portlet:actionURL>
<aui:form action="<%= updateURL %>">
<aui:input name="name" label="course.name" type="text" ></aui:input>
<aui:button-row>
<aui:button type="submit" value="save"></aui:button>
<aui:button type="cancel" value="cancel" href="<%= backURL %>"></aui:button>
</aui:button-row>
</aui:form>
Y listo, todo queda igual.
En el vídeo podrás apreciar cómo funciona todo junto.
Si te gustó el vídeo, dale like; si te es útil, compártelo… es gratis.
Y si tienes algún comentario, pregunta, queja, denuncia, no dejes de hacerlas en la caja de comentarios de aquí o el del vídeo, y así estaremos más en contacto.
¡Bendiciones!