我正在使用Liferay 6.2,我在jsp中有一个如下表单
<form name="<portlet:namespace/>"
action="<portlet:actionURL windowState='normal'>
<portlet:param name='action' value='processAction'/>
</portlet:actionURL>"
method="post">
Value: <input type="text" name="prpValue" />
<input type="submit" name="submit" value="Submit" />
</form>
在我使用的相应processAction方法中
actionRequest.getParameterMap();
没有prpValue参数?
这里缺少什么?
注意:我不能将actionRequest.getParameter()与namesapce一起使用,因为我的通用逻辑是这样的,我需要获取所有参数。
答案 0 :(得分:4)
尝试
Value: <input type="text" name="<portlet:namespace/>prpValue" />
这正确地命名参数,它将被定向到您的portlet。实际参数可以读作
actionRequest.getParameter("prpValue");
所以PortalRequest
参数处理已经删除了命名空间
编辑:正如你所说它不适合你,这对我有用:具有这些实现的普通portlet:
@ProcessAction(name="go")
public void go(
ActionRequest request, ActionResponse response)
throws IOException, PortletException {
StringBuilder result = new StringBuilder();
Map<String, String[]> pm = request.getParameterMap();
for(String key:pm.keySet()) {
result.append(key).append(": [ ");
String[] value = pm.get(key);
if(value != null) {
for(String val:value) {
result.append(val).append(" ");
}
}
result.append("]<br/>");
}
response.setRenderParameter("PM", result.toString());
}
和view.jsp一样:
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<portlet:defineObjects />
Testportlet
<form action="<portlet:actionURL name='go'/>" method="post">
<input name="<portlet:namespace/>test" type="text" value="testing"/><br/>
<input type="submit"/><br/>
</form>
<hr/>
<%=renderRequest.getParameter("PM") %>
答案 1 :(得分:0)
我也被困在这上面了。解决方案很简单。
添加<requires-namespaced-parameters>false</requires-namespaced-parameters>
到你的liferay-portlet.xml - &gt; portlet条目。
这是版本6.2的更改。
There is official detailed explanation