In-6ren">
gpt4 book ai didi

jsp - Liferay portlet 不接收表单数据

转载 作者:行者123 更新时间:2023-12-04 14:11:52 25 4
gpt4 key购买 nike

我在 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 类,但它不会。这是我的类(class)代码:

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!会不会导致问题?

最佳答案

您应该像这样为 name 值添加 namespace 前缀:

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

或者您可以在 liferay-portlet.xml 中将 requires-namespaced-parameters 设置为 false。

这是自 Liferay 6.2 以来的更改:https://github.com/liferay/liferay-aui-upgrade-tool/issues/30

关于jsp - Liferay portlet 不接收表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19013498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com