在后端取不到form表单的值,Portlet跨war包传递

在Liferay 6.2及以上版本中,后端无法获取表单输入值,因为默认需要namespace。解决方法包括:1) 修改liferay-portlet.xml,设置requires-namespaced-parameters为false;2) 在表单元素中手动添加namespace;3) 使用AUI标签,它会自动添加namespace。跨WAR包时,设置private-session-attributes为false以实现数据共享。
摘要由CSDN通过智能技术生成

在使用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是一样的。

===============================================================

<!-- 跨WAR包使用Portlet -->
     <private-session-attributes>false</private-session-attributes>

例如:

<portlet>
		<portlet-name>portlet-a</portlet-name>
		<icon>/icon.png</icon>
		<!-- 跨WAR包使用Portlet -->		
		<private-session-attributes>false</private-session-attributes>
		<!-- 设置namespace为非必须,或者在表单上添加 -->
		<requires-namespaced-parameters>false</requires-namespaced-parameters>
		<header-portlet-css>/css/main.css</header-portlet-css>
		<footer-portlet-javascript>
			/js/main.js
		</footer-portlet-javascript>
		<css-class-wrapper>portlet-a-portlet</css-class-wrapper>
	</portlet>

注意:在liferay-portlet.xml中添加配置标签(例如以上配置),则都要添加,不能只给其中一个Portlet添加

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值