当前位置: 首页 > 知识库问答 >
问题:

Liferay portlet不接收表单数据

景令秋
2023-03-14
<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(“工业”)读取值;但是,它总是返回“no-param”,这意味着ActionRequest.getParameter()返回null。

因此,似乎正确调用了我的processAction方法,但它没有接收表单数据。错误在哪里,我错了什么?

我将portlet下载到我的本地机器上,部署到本地演示Liferay安装中,它工作了!所以代码应该是可以的,这一定是一些服务器设置/问题。一个不同之处是,在Chrome开发者工具的network选项卡中,本地服务器只有一个状态为200的POST调用,而在远程服务器上有一个临时移动的POST调用302和一个URL相同的GET 200!它会导致问题吗?

共有1个答案

子车凯泽
2023-03-14

您应该在name值中添加一个名称空间前缀,如下所示:

<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

 类似资料:
  • 我正在尝试从接收包含3个参数的多部分请求: 一个 一个 我在控制器中接收到和fine,但json的所有字段都为NULL。会有什么问题吗? JSON 控制器 邮差

  • 我有一个谷歌表单,它将数据收集到电子表格中(表单响应1)。因为我认为有4m行的限制,所以如何以编程方式创建新的工作表并将响应存储到新创建的工作表中。 注意:这不是将响应复制到新工作表中。

  • 我正在尝试将表单序列化值发布到控制器(WebAPI自宿主)。我无法理解为什么没有正确绑定NameValueCollection。使用jQuery的客户端: 使用Web API自主机的服务器端: 非常感谢。

  • 我使用Android应用程序通过TCP套接字与同一局域网上的PC java应用程序进行通信、发送和接收消息。下面是我在android中使用的Asynctask的代码,用于发送消息并从PC接收回复: } 我在onPostExcecute中的祝酒词中显示PC的回复。 Android通过BufferedWriter发送消息,而PC上的java应用程序在BufferedReader中接收消息。 PC在收到

  • 本文向大家介绍Struts2中接收表单数据的三种驱动方式,包括了Struts2中接收表单数据的三种驱动方式的使用技巧和注意事项,需要的朋友参考一下 1.属性驱动 前台表单中字段的name和后台action中的属性字段的名称必须保持一致; 2.域驱动 前台表单中字段的name应该为:objectName.attribute的形式; 后台action中以object为单位进行数据的接收,前台页面的取值

  • 试图将$http.post请求从AngularJS表单发送到Symfony控制器以将表单内容添加到数据库。我可以在AngularJS侧获得"状态"200的成功响应。 但是,在Symfony控制器上,$request- 另外,安装了FOSRestBundle并启用了body listener、param fetcher listener。 我知道我的问题与AngularJS对Symfony控制器的P