我在 Liferay 中制作了一个显示表单的 portlet。我想在提交后处理表单数据,但数据在某处“消失”。
这是我在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>
数据应该传递给我的 portlet 类,但它不会。这是我的课程代码:
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
方法被正确调用,但它没有接收表单数据。错误在哪里,我做错了什么?
更新:
我将 portlet 下载到我的本地机器,部署到本地演示 Liferay 安装,它工作!所以代码应该没问题,它一定是一些服务器设置/问题。一个不同之处在于,在 Chrome 开发者工具的网络选项卡中,本地服务器只有一个状态为 200 的 POST 调用,而在远程服务器上,有一个 302 临时移动的 POST 和一个具有相同 URL 的 GET 200!它会导致问题吗?