`

解决使用jquery1.3以上版本时出现Malformed OGNL expression: f[] [ognl.ParseException: Encount

 
阅读更多
当使用jquery1.3以上版本时,进行ajax参数传值时,会出现以下的一个错误:
ognl.ExpressionSyntaxException: Malformed OGNL expression: f[] [ognl.ParseException: Encountered " "]" 
"] "" at line 1, column 3.

这个错误是因为,jquery在传递数组类参数时,将不再遵循1.3时如f=x&f=y的参数传递了,而是采用了像php一样,带中括号的参数传递。js值 {f:["x","y"]},将被转化成f[]=x&f[]=y,而这种参数形式传递到后台时,使用struts2.1.8版本时,就会出现以上的错误形式。

    struts2一直能够识别的模式仅是f=x&f=y这样,当后台声明f为一个list或set时,就会把x,y分别加入到list或set中。而如果是f[]这种形式,则会报相应的转换错误。

    解决此问题的方法很简单,在进行ajax请求时,追加一条以下语句即可:
$.ajaxSettings.traditional=true;


这是一个全局参数,故可以在引入jquery.js之后进行声明。此参数的意思在于,使用$.param时,将采用旧的jquery1.3版本的param生成方式进行处理。
具体的区别代码如下所示:
function buildParams( prefix, obj, traditional, add ) {
    if ( jQuery.isArray( obj ) && obj.length ) {
        // Serialize array item.
        jQuery.each( obj, function( i, v ) {
            if ( traditional || rbracket.test( prefix ) ) {
                // Treat each array item as a scalar.
                add( prefix, v );
 
            } else {
                // If array item is non-scalar (array or object), encode its
                // numeric index to resolve deserialization ambiguity issues.
                // Note that rack (as of 1.0.0) can't currently deserialize
                // nested arrays properly, and attempting to do so may cause
                // a server error. Possible fixes are to modify rack's
                // deserialization algorithm or to provide an option or flag
                // to force array serialization to be shallow.
                buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v, traditional, add );
            }
        });
 
    } else if ( !traditional && obj != null && typeof obj === "object" ) {
        // If we see an array here, it is empty and should be treated as an empty
        // object
        if ( jQuery.isArray( obj ) || jQuery.isEmptyObject( obj ) ) {
            add( prefix, "" );
 
        // Serialize object item.
        } else {
            for ( var name in obj ) {
                buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
            }
        }
 
    } else {
        // Serialize scalar item.
        add( prefix, obj );
    }
}

转自http://www.iflym.com/index.php/code/201110110001.html
分享到:
评论

相关推荐

    强制删除任何EXE文件和被加载的DLL文件!

    强制删除任何EXE文件和被加载的DLL文件!

    IDEA 中使用 ECJ 编译出现 java.lang.IllegalArgumentException的错误问题

    "IDEA 中使用 ECJ 编译出现 java.lang.IllegalArgumentException 的错误问题解决方案" IDEA 是一个功能强大且功能丰富的集成开发环境,支持多种编程语言,包括 Java、Python、Ruby 等。ECJ(Eclipse Compiler for ...

    阿里云镜像安装docker报错的问题及解决方案

    使用阿里云镜像安装docker时出现如下报错,具体如下图: Malformed entry 60 in list file /etc/apt/sources.list (Component) 解决方案 注意到报错提示/etc/apt/sources.list 这个文件第60行格式错误,那么尝试...

    【csv转json】【json转csv】Papa Parse

    Papa Parse - Powerful CSV parser that converts CSV to JSON and JSON to CSV. Supports web workers and streaming large files. Gracefully handles malformed input. ...

    myeclise10之svn:E210004错误解决

    myeclise10 svn: E210004: Number is larger than maximum 解决方案 专门解决win7 64位操作系统 下svn插件问题。 下载文件包括: site-1.8.22.zip --->svn离线安装包 Slik-Subversion-1.8.9-x64 --->问题修复必选...

    weblogic部署到myeclipse后web.xml的问题

    通过以上分析和解决方案的实施,可以有效地解决在MyEclipse中部署Web应用程序到WebLogic服务器时遇到的`web.xml`格式错误问题。同时,这些扩展知识点也为开发者提供了更深入的理解和技术背景支持。

    Malformed Request(解决方案).md

    Malformed Request(解决方案).md

    platform-tools-r34.0.1-windows.zip.7z

    34.0.1 (March 2023): ...Windows: Fixed "mke2fs: Illegal or malformed device name while trying to determine filesystem size" error introduced in Platform tools 34.0.0 (issue #271039230).

    SIFT算法源码_修正版

    4. **错误修复**:解决已知的bug或错误,确保算法在各种输入条件下都能稳定工作。 总之,修正版的SIFT算法源码很可能是对原有版本的一次全面升级,旨在提高算法的整体性能和可靠性,使其更加适用于实际应用场合。

    libRadtran软件包及依赖包

    libRadtran在进行复杂计算时,可能会用到这些科学计算工具。 m4-1.4.13.tar.gz是M4预处理器的源代码包,这是一个古老的宏处理语言,常用于配置脚本。在libRadtran的编译安装过程中,可能会用到M4来处理某些配置文件...

    Sqlite数据库文件

    Sqlite数据库报错:database disk image is malformed 按照博文的方法终于解决了我的问题: cmd切换到该目录下然后输入: sqlite3 old.db .dump > newsfeed.sql 和 sqlite3 new.db < newsfeed.sql

    getjson()兼容性问题

    在开发过程中,当使用jQuery 1.4.2及以上版本时,可能会遇到由于JSON格式不规范导致的解析错误。这些错误主要体现在当服务器返回的JSON数据不符合严格的JSON标准时,jQuery会抛出异常,导致Ajax请求失败。具体来说,...

    【官方源码】HtmlAgilityPack V1.5.1

    It is a .NET code library that allows you to parse "out of the web" HTML files. The parser is very tolerant with "real world" malformed HTML. The object model is very similar to what proposes System....

    resolve-package-json:解决package.json依赖版本

    resolve-package-json 解决package.json依赖版本安装 $ npm install --save resolve-package-json用法 const { resolver } = require ( 'resolve-package-json' )const pkg = require ( './package.json' )resolver ...

    Monkeytalk installation guide.

    本指南将详细介绍 MonkeyTalk 的安装、配置以及简单的使用方法。 首先,你需要从官方指定的网站(http://www.cloudmonkeymobile.com/download/monkeytalk-professional)下载 MonkeyTalk 的安装包。安装过程包括两...

    AndroidGPS架构分析.pdf

    * Context 和 ILocationManager:在 GpsLocationProvider 构造函数中使用的两个参数。 Android GPS 架构分析是一个复杂的知识点,涉及到多个组件和接口的交互,对于 Android 系统的位置服务是非常重要的。

    如何根据Wowza服务器日志中的出错信息进行故障排查

    WARN server comment Server.run: License key specified in [install-dir]/conf/Server.license file is malformed. ERROR server comment error: java.lang.NullPointerException ERROR server comment ERROR: ...

    使用 Java 实现的压缩/解压 ZIP 文件的工具类

    在Java编程环境中,处理文件压缩和解压任务是常见的需求,尤其在数据传输或存储时。ZIP文件格式因其广泛支持和高效性而被广泛应用。本文将深入探讨如何使用Java实现ZIP文件的压缩与解压,重点讲解核心API,如`java....

Global site tag (gtag.js) - Google Analytics