1.前端采用jsp 三种写法
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@page contentType="text/html; charset=UTF-8" %>//中文编码
<portlet:defineObjects />
<portlet:actionURL var="saveURl" name="save"/> // name对应方法名 var 起的的别名
<form action="<%=saveURl%>" method="post"> //提交的路径
姓名:<input name="isbn" type="text"><br>
密码:<input name="bookName" type="text"><br>
<input type="submit" value="提交">
</form>
<form action='<portlet:actionURL name="save"/>' method="post">
ISBN:<input name="isbn" type="text"><br>
图书名称:<input name="bookName" type="text"><br>
<input type="submit" value="提交">
</form>
<form action="${saveURl}" method="post">
ISBN:<input name="isbn" type="text"><br>
图书名称:<input name="bookName" type="text"><br>
<input type="submit" value="提交">
</form>
2.后台 java代码 两种方法
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.util.bridges.mvc.MVCPortlet;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
public class Book extends MVCPortlet {
public void save(ActionRequest request,ActionResponse response) {
String isbn= ParamUtil.getString(request, "isbn","abc"); //工具类 也可采用servlet的传值方式,优点是有默认值
String bookName= ParamUtil.getString(request, "bookName","cd");
System.out.println(isbn);
System.err.println(bookName);
}
}
也可以 String parameter = request.getParameter("isbn");
public class Book extends MVCPortlet {
@ProcessAction(name="save") //当name不一样时 可以采用注解方式
public void savemethod(ActionRequest request,ActionResponse response) {
String isbn= ParamUtil.getString(request, "isbn","abc");
String bookName= ParamUtil.getString(request, "bookName","cd");
System.out.println(isbn);
System.err.println(bookName);
}
}
注意:我们会发现这两种方式取到的值都是空的,而同样的代码在6.2之前的版本里面是没有问题,原因是从Liferay 6.2开始,默认情况下Liferay要求必须添加Namespace才行,解决方法有两个:
1、设置namespace为非必须。
打开Portlet插件工程中的liferay-portlet.xml,在相应的Portlet里面添加如下代码:
<requires-namespaced-parameters>false</requires-namespaced-parameters>
2、为我们的表单添加上namespace。
<form action="${saveURl}" method="post">
ISBN:<input name="<portlet:namespace/>isbn" type="text"><br>
图书名称:<input name="<portlet:namespace/>bookName" type="text"><br>
<input type="submit" value="提交">
</form>
3.使用AUI标签如果即不想改liferay-portlet.xml,也不想自己添加namespace,则可以使用AUI的form标签。
<aui:input label="User Name" name="userName">
使用AUI标签的时候,他其实是会自动的添加上namespace,本质上和上面手动的添加namespace是一样的
备注:当protlet:renderURL 引用时 后台执行的方法是doview (当页面开始加载时)
<form action="${difine}" method="post">
ISBN:<input name="<portlet:namespace/>isbn" type="text"><br>
图书名称:<input name="<portlet:namespace/>bookName" type="text" value="${isbn}"/><br> //可以设置默认提示符
<input type="submit" value="提交">
@Override
public void doView(RenderRequest renderRequest,
RenderResponse renderResponse) throws IOException, PortletException {
String isbn= ParamUtil.getString(renderRequest, "isbn","agb");
System.out.println(isbn);
renderRequest.setAttribute("isbn","请输入书名");
super.doView(renderRequest, renderResponse);
}