用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
goodhumor的公告
文章分类
    存档

    原创  prototype的Ajax向Struts2发送'&_='的小bug 收藏

     prototype的Ajax向Struts2发送'&_='的小bug

    (by goodhumor)

        前段时间调J2EE程序时打开Struts2开发模式(<constant name="struts.devMode" value="true"/>),
    Tomcat经常显示log的如下的错误:

    [ERROR][http-8080-12]com.opensymphony.xwork2.interceptor.ParametersInterceptor
    (ParametersInterceptor.java:204)- ParametersInterceptor - [setParameters]:
    Unexpected Exception caught setting '_' on 'class cdbp.action.admin.RegistAction:
    Error setting expression '_' with value '[Ljava.lang.String;@3744bc'

        刚开始从jsp页面找错,愣是没找到哪有个'_'参数,而且这个小bug也不影响程序正确执行,
    因而扔在一边不管了。今天心血来潮再细查一遍,终于查到原因。

        原来某个JSP页面中用到prototype-1.4.0.js的Ajax.Request发送请求,而prototype-1.4.0.js
    中的631行加上了'_'参数,如下:

    request: function(url) {
        var parameters = this.options.parameters || '';
        if (parameters.length > 0) parameters += '&_=';//(1)就是这了
        ……
        把该行屏蔽掉,Struts2再也不报以上错误了。

    prototype-1.6.0.js也有类似语句(1222行):

    if (params = Object.toQueryString(params)) {
          // when GET, append parameters to URL
          if (this.method == 'get')
            this.url += (this.url.include('?') ? '&' : '?') + params;
          else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))
            params += '&_='; //(2)就是这了
        }

        不知prototype为何非要加上这个请求参数,难道"Konqueror|Safari|KHTML"要求的?
        反正用IE和FF的人较多,把该句屏蔽掉不管了。

    发表于 @ 2008年03月19日 00:25:00 | 评论( loading... ) | 编辑| 举报| 收藏

    旧一篇:spring中以dataSource方式使用proxool连接池

    • 发表评论
    • 评论内容:
    •  
    Copyright © goodhumor
    Powered by CSDN Blog