首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何配置Struts 2.3以同时接受GET和POST参数?

如何配置Struts 2.3以同时接受GET和POST参数?
EN

Stack Overflow用户
提问于 2014-08-04 06:33:32
回答 2查看 1.2K关注 0票数 0

我们已经从2.0迁移到2.3。在Struts 2.0中,我们能够发送包含post和get参数的AJAX请求。但是在迁移到Struts 2.3之后,都无法完成这样的请求。

下面是使用Prototype.js发出的示例AJAX请求的样子:

代码语言:javascript
代码运行次数:0
运行
复制
var url = '/security/userdetails.action?mode=edit&userid=5';
var params = Form.serialize(form);
new Ajax.Request(url,
        {
            parameters: params,
            onSuccess: function(trans) {
                console.debug('success', trans);
            },
            onFailure: function(trans) {
                console.debug('failure', trans);
            },
            onException:function(trans) {
                console.debug('exception', trans);
            }
        });

如您所见,上面的AJAX请求包含GET和POST请求。这在2.0中很好,但在2.3中,似乎验证了请求,并将请求转发到结果类型"input",但为此,我们没有配置JSP,最终得到的只是404 Not。

但是,如果我们将代码更改为下面的代码,它也可以在Struts 2.3中工作。

代码语言:javascript
代码运行次数:0
运行
复制
var url = '/security/userdetails.action?mode=edit';    // ------ The Changes are here
var params = Form.serialize(form);
params.userid = 5;  // ----- And here
new Ajax.Request(url,
        {
            parameters: params,
            onSuccess: function(trans) {
                console.debug('success', trans);
            },
            onFailure: function(trans) {
                console.debug('failure', trans);
            },
            onException:function(trans) {
                console.debug('exception', trans);
            }
        });

第一种方法有什么问题?Struts 2.3中是否有允许提出该请求的配置?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-04 17:18:47

问题是:

userid在action类中被定义为一个整数,因此很明显,它的setter和getter也是用整数定义的。

但是这个userid既存在于url (作为查询字符串)中,也存在于post正文中--因此基本上是一个由两个字符串组成的数组。当struts试图从数组中解析整数时,它将得到数字格式异常->,这将导致无效的表单提交,从而重定向到"input“结果类型。

我没有看到struts在那件事上登了名,于是就偏离了实际的问题。

不过,谢谢你的意见。

票数 0
EN

Stack Overflow用户

发布于 2014-08-04 06:56:28

这取决于HttpServlet是如何工作的,以及Struts2用于从请求中检索参数的方法,以及在此过程中使用的方法GET/POST (而不是两者兼用)。Struts2使用request.getParameterMap()获取参数

请求参数是与请求一起发送的额外信息。对于HTTP,参数包含在查询字符串或已发布的表单数据中。

但是您使用的是http方法,参数应该是post数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25112923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档