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

2014年08月05日 Liferay 评论 4 条 阅读 5,742 views 次

在使用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-not-requeires

 

添加完成后,重新部署即可取到值。

为表单添加上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是一样的。

用户头像

4 条留言  访客:3 条  博主:1 条

  1. avatar happypanda

    今天被这个问题烦了一个下午,原来如此。。。

  2. 同样被这问题折磨了2天,真是无语了,作者好牛X

  3. <form action="?name=lucy” method=”post”> 可以这样传参数吗

给我留言

Copyright © IT人生录 保留所有权利.   主题设计 知更鸟 滇ICP备16001547号-1

用户登录

分享到: