Liferay 6开发学习(二十九):在后端取不到form表单的值

在使用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 工程,如下图所示:


你可能感兴趣的:(Liferay 6开发学习(二十九):在后端取不到form表单的值)