2014-01-08 1 views
0

Когда я пытаюсь получить данные, представленные в форме в Liferay 6.2, он возвращает нулевые значения, как если бы данные формы были выброшены.Данные формы в запросе равны нулю при использовании ActionMapping/RequestMapping в 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

Вы должны либо поместить префикс пространства имен для вашего name значения, как это:

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

или вы можете установить requires-namespaced-parameters установку на ложь в вашем liferay-portlet.xml.

Это изменение по сравнению с Liferay 6.2: https://github.com/liferay/liferay-aui-upgrade-tool/issues/30

Они решили сделать формы немного более строги от 6.2. По умолчанию он становится ложным по умолчанию, по-прежнему обсуждается на форумах Liferay, поэтому он может стать автоматическим, но на данный момент вам приходится обрабатывать пространство имен вручную.