当我尝试获取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);
}
为什么会这样?
答案 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论坛上仍然存在争议,所以它可能会变成自动的,但是现在你必须手动处理命名空间。