首页 > 代码库 > Liferay7 BPM门户开发之39: Form表单提交的ProcessAction处理
Liferay7 BPM门户开发之39: Form表单提交的ProcessAction处理
在v6.2开始后,需要设置<requires-namespaced-parameters>false</requires-namespaced-parameters> 来避免在jsp中写<portlet:namespace/>的input前缀
在v7.0发现,注解方式是不灵的!
即 "javax.portlet.requires-namespaced-parameters=false", 无效果, 真是汗...
但我们是有办法在7.0中解决的,直接上代码
jsp:
<%@page import="com.liferay.portal.kernel.portlet.LiferayPortletMode"%><%@page import="com.liferay.portal.kernel.portlet.LiferayWindowState"%><%@ include file="/init.jsp" %><p> <b><liferay-ui:message key="com_lifiti_parts_ComLifitiPartsmvcportlet.caption"/></b></p><liferay-portlet:renderURL var="openPortletURL" copyCurrentRenderParameters="true" portletMode="<%=LiferayPortletMode.VIEW.toString() %>" windowState="<%=LiferayWindowState.NORMAL.toString()%>"> <liferay-portlet:param name="param" value="参数的值"/></liferay-portlet:renderURL><c:set var="submit"><liferay-ui:message key="com_lifiti_parts_ComLifitiPartsmvcportlet.submit"/></c:set><a href="${openPortletURL}">Render Url created</a><portlet:actionURL var="sendURL" name="send"> </portlet:actionURL> <form action="${sendURL}" method="post" name="fm"> <aui:input name="name" label="Name" id="name"/> <input type="text" id="age" name="age" /> <input type="text" name="<portlet:namespace/>phone" /> <input type="submit" value="${submit}"></input> </form>
portlet java
package com.lifiti.portlet;import com.liferay.portal.kernel.log.Log;import com.liferay.portal.kernel.log.LogFactoryUtil;import com.liferay.portal.kernel.portlet.bridges.mvc.MVCPortlet;import com.liferay.portal.kernel.util.ParamUtil;import java.io.IOException;import javax.portlet.ActionRequest;import javax.portlet.ActionResponse;import javax.portlet.Portlet;import javax.portlet.PortletException;import javax.portlet.ProcessAction;import javax.portlet.RenderRequest;import javax.portlet.RenderResponse;import org.osgi.service.component.annotations.Component;@Component( immediate = true, property = { "com.liferay.portlet.display-category=category.sample", "com.liferay.portlet.instanceable=true", "javax.portlet.requires-namespaced-parameters=false",没效果! "javax.portlet.display-name=com.lifiti.parts Portlet", "javax.portlet.init-param.template-path=/", "javax.portlet.init-param.view-template=/view.jsp", "javax.portlet.resource-bundle=content.Language", "javax.portlet.security-role-ref=power-user,user" }, service = Portlet.class)public class FirstPortlet extends MVCPortlet { private static final Log _log = LogFactoryUtil.getLog(FirstPortlet.class.getName()); @Override public void render(RenderRequest request, RenderResponse response) throws PortletException, IOException { _log.info(" This is render method of RenderURLByLiferayTagPortlet"); String data = request.getParameter("param"); String data1= ParamUtil.getString(request, "param",""); System.out.println("parameter with request.getParameter is =>"+data); System.out.println("parameter with ParamUtil.getString is =>"+data1); super.render(request, response); } @ProcessAction(name="send") public void ReceiveData(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { String name = ParamUtil.getString(actionRequest, "name"); String age = ParamUtil.getString(actionRequest, "age"); String phone = ParamUtil.getString(actionRequest, "phone"); _log.info(" 开始接收数据"); System.out.println("FirstPortlet.java name = " + name); System.out.println("FirstPortlet.java age = " + age); System.out.println("FirstPortlet.java phone = " + phone); } }
界面:
运行的结果:
name = 王昕
age =
phone = 123
我们发现age是空的,看来说明如果用input元素,那还得写<portlet:namespace/> ,要么就用AUI,应该问题会比较少
Liferay7 BPM门户开发之39: Form表单提交的ProcessAction处理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。