在使用Liferay 6.2以上版本的时候,可能会碰到一个情况就是,在后端取不到前面的Form表单的值。
比如现在有一个Form表单:
<input type="text" name="userName">
我们在后端使用如下代码进行取值的时候取不到:
String userName = request.getParameter("userName")
或者:
String userName = ParamUtil.getString(request, "userName");
我们会发现这两种方式取到的值都是空的,而同样的代码在6.2之前的版本里面是没有问题,原因是从Liferay 6.2开始,默认情况下Liferay要求必须添加Namespace才行,解决方法有两个:
1、设置namespace为非必须。
2、为我们的表单添加上namespace。
设置Namespace为非必须
打开Portlet插件工程中的liferay-portlet.xml,在相应的Portlet里面添加如下代码:
<requires-namespaced-parameters>false</requires-namespaced-parameters>
位置示例如下,一般入在icon和header-portlet-css的中间。
添加完成后,重新部署即可取到值。
为表单添加上namespace
将页面上的代码改为如下:
<input type="text" name="<portlet:namespace/>userName">
改成如上的代码,也就是为此字段添加了namespace,后端即可以取到值。
注意:这里只是form表单里面的值有变化,后端的代码不用修改。
使用AUI标签
如果即不想改liferay-portlet.xml,也不想自己添加namespace,则可以使用AUI的form标签。
<aui:input label="User Name" name="userName">
使用AUI标签的时候,他其实是会自动的添加上namespace,本质上和上面手动的添加namespace是一样的。
liferay 6.2增删改查(CRUD)开发实例
在之前分享过一个《Liferay6.1简单增删改查示例》。那篇文章里面是基于Liferay6.1.1的。
下面的本示例是基于Liferay6.2.1的,内容更完善,代码更复杂点,界面基于AUI和Liferay的search-container。
百度网盘地址:http://pan.baidu.com/s/1eQEdlo2
本示例有是网易云课堂上的视频中的demo代码,如果想看详细的视频讲解,可以到网易云课堂学习:
http://study.163.com/course/introduction/668003.htm#/courseDetail
使用说明:
1、下载后,将工程解压后放于SDK的portlets目录下面。
2、在Eclipse(Liferay IDE)里面,导入Liferay 工程,如下图所示: