在Liferay 6.2中使用ActionMapping / RequestMapping时,请求中的表单数据为null

时间:2014-01-08 07:31:39

标签: java liferay liferay-6 spring-portlet-mvc

当我尝试获取Liferay 6.2中表单中提交的数据时,它返回空值,就好像表单数据被丢弃一样。

JSP:

<liferay-portlet:actionURL var="link">
    <liferay-portlet:param name="action" value="doSomething"/>
</liferay-portlet:actionURL>
<form:form method="POST" action="${link}">
    <label>
        <select id="comboSelect" name="comboSelect">Options:
            <option value="1">FOO</option>
            <option value="2">BAR</option>
        </select>
    </label>
    <input type="submit"/>
</form:form>   

控制器:

@ActionMapping(params = { "action=doSomething" }, method = RequestMethod.POST)
public void doSomething(@RequestParam(value = "comboSelect") String selection){
    System.out.print(selection);
}

为什么会这样?

1 个答案:

答案 0 :(得分:1)

您应该为您的name值添加名称空间前缀,如下所示:

<input type="text" name="<portlet:namespace />inputTextName" />

或者您可以在requires-namespaced-parameters中将liferay-portlet.xml设置为false。

这是Liferay 6.2以来的变化:https://github.com/liferay/liferay-aui-upgrade-tool/issues/30

他们决定从6.2开始制作更严格的表格。据我所知,默认情况下将其设为假是在Liferay论坛上仍然存在争议,所以它可能会变成自动的,但是现在你必须手动处理命名空间。