Liferay でフォームを表示するポートレットを作成しました。送信後のフォームデータを処理したいのですが、どこかでデータが「消えて」しまいます。
これはjspの私のフォームコードです:
<portlet:actionURL windowState="normal" var="filterURL">
</portlet:actionURL>
<form action="<portlet:actionURL />" method="post">
Industry: <input type="text" name="<portlet:namespace />industry" value="<%= industryFilter %>"/>
<input type="submit" value="Filter" />
</form>
データはポートレット クラスに渡されるはずですが、渡されません。これは私のクラスコードです:
public void processAction(
ActionRequest actionRequest, ActionResponse actionResponse)
throws IOException, PortletException {
String industryFilter = actionRequest.getParameter("industry");
if(industryFilter == null) {
industryFilter = "no-param";
}
actionResponse.setRenderParameter("industry", industryFilter);
super.processAction(actionRequest, actionResponse);
}
このクラスは、データを jsp に戻すことを目的としています。メソッドはsetRenderParameter()
正常に動作します。jsp を使用して値を読み取ることができますが、request.getParameter("industry");
常に「no-param」を返します。つまり、actionRequest.getParameter()
null が返されます。
したがって、私のprocessAction
メソッドは適切に呼び出されるようですが、フォームデータを受け取りません。エラーはどこにありますか、何が間違っていましたか?
アップデート:
ポートレットをローカル マシンにダウンロードし、Liferay のローカル デモ インストールにデプロイしたところ、うまくいきました。したがって、コードは問題ないはずです。サーバーの設定/問題である必要があります。Chrome 開発者ツールのネットワーク タブでは、ローカル サーバーにはステータス 200 の POST 呼び出しが 1 つしかないのに対し、リモート サーバーには 302 Moved Temporarily の POST と同じ URL の GET 200 があることに気付きました。それは問題を引き起こす可能性がありますか?