当前位置: 首页 > 面试题库 >

通过Ajax调用使用Struts 2实现HTTP数组参数

李胡媚
2023-03-14
问题内容

我在向Struts 2动作类发送数组参数时遇到问题。我正在使用Struts 2.1.8.1。

这是一些示例代码:

public class MyAction extends ActionSupport {

    private String[] types;

    public String execute() {
        return SUCCESS;
    }

    public String[] getTypes() {
        return types;
    }

    public void setTypes(String[] types) {
        this.types = types;
    }
}

问题是通过jquery ajax方法发送数组时:

$.ajax({
    type: 'POST',
    url: 'Myaction.action',
    data: {
        types: ["this", "is", "a", "test"]
    }
});

导致发生异常:

ognl.ParseException: Encountered " "]" "] "" at line 1, column 7.

如何使用jQuery将数组发送到Struts2动作类?是否需要包含拦截器中的某些内容?还是在jQuery中有删除此选项的选项?

我在jQuery UI Sortable控件中也遇到了此问题,但是我使用正则表达式删除了“
[]”字符,从而解决了该问题。我想避免这种情况,因为这种解决方案使我感到困扰。我想我可以自己构建字符串,而不使用对象表示法,但是除非您可以使我信服,否则我想改为使用对象表示法。


问题答案:

IIRC Struts不喜欢jQuery
1.4+格式,但是您可以使用传统格式,只需在$.ajax()调用之前的任何时间放置它:

$.ajaxSettings.traditional = true;

您可以在$.param()文档中阅读有关1.4+默认与传统序列化的更多信息,最好的说明是它们的简短示例:

// <=1.3.2: (traditional in 1.4+)
$.param({ a: [2,3,4] }) // "a=2&a=3&a=4"
// >=1.4: (default in 1.4+)
$.param({ a: [2,3,4] }) // "a[]=2&a[]=3&a[]=4"


 类似资料:
  • 本文向大家介绍jQuery中通过ajax调用webservice传递数组参数的问题实例详解,包括了jQuery中通过ajax调用webservice传递数组参数的问题实例详解的使用技巧和注意事项,需要的朋友参考一下 下面通过实例给大家说明比较直观些,更方便大家了解。 本人的项目中通过jquery.ajax调用webservice. 客户端代码如下: 服务端代码如下: 总是抛出异常. 问题出现在这里

  • 问题内容: 我正在这样发出Ajax请求: 在服务器端,我完成了一些如下代码: Ajax POST可以正常工作。我可以在mozilla的Web开发人员工具中看到,但是页面没有像我想象的那样重定向到其他页面。谁能告诉我我做错了什么? 还是无法通过Ajax 打电话? 问题答案: 是的,据我所知,您不能简单地从客户端检测重定向。 您可以做的一件事就是如何返回指示从服务器端代码进行重定向的内容。类似于以下J

  • 问题内容: 在我的Ajax代码中,我正在向go lang api发送一个关联数组,但是go lang不会接收任何数组。为什么? 为什么这个Ajax不会将数组发送到Go API?在下面的mvc结构中,我想要接收此数据: 问题答案: 您不能直接将数组从客户端发送到服务器,因为数组定义在两侧可能不相同。 有两种解决方法: 一个。您可以在clinet中将数组转换为json字符串,然后将其作为字符串参数发送

  • 本文向大家介绍Mybatis调用PostgreSQL存储过程实现数组入参传递,包括了Mybatis调用PostgreSQL存储过程实现数组入参传递的使用技巧和注意事项,需要的朋友参考一下 前言 项目中用到了Mybatis调用PostgreSQL存储过程(自定义函数)相关操作,由于PostgreSQL自带数组类型,所以有一个自定义函数的入参就是一个int数组,形如: 如上所示,参数是一个int数组,

  • 问题内容: 谁能告诉我如何将值作为函数的返回值返回。 当您点击注册表格中的提交时,上述功能就会触发(很明显)。问题是,无论响应是什么,此表单都将提交,并且警告框有时不显示任何内容(空白),有时根本不显示。但是,如果我将结尾更改为手动[即用] 替换,则正确的值将显示在警报框中。 PS我比JavaScript的菜鸟还差,因此也欢迎提出一般性改进代码的建议。 问题答案: 问题是,直到……等待……状态改变

  • 问题内容: 我正在尝试通过ajax和php调用一些数据库数据。但是ajax调用不起作用,我无法在网络上找到解决方案。 所以这是我的代码: test.php 如果我在浏览器中键入该网址: 通过jsonEncode返回的数据是正确的,但是当我使用jquery将其加载到html页面时,他无法读取数据。 test.html 提前致谢。 问题答案: 您的 变量 没有价值。您想使用 字符串 。也许您也希望能够