0

Liferay 6.2 のフォームで送信されたデータを取得しようとすると、フォーム データが破棄されたかのように null 値が返されます。

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);
}

なぜこうなった?

4

1 に答える 1

1

name次のように、値に名前空間プレフィックスを付ける必要があります。

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

requires-namespaced-parametersまたは、で設定を false に設定できますliferay-portlet.xml

これは Liferay 6.2 からの変更です: https://github.com/liferay/liferay-aui-upgrade-tool/issues/30

彼らは、フォームを 6.2 からもう少し厳密にすることにしました。デフォルトで false にすることは、私の知る限り、Liferay フォーラムでまだ議論されているため、自動化される可能性がありますが、今のところ、名前空間を手動で処理する必要があります。

于 2014-01-08T07:31:39.077 に答える