我在将数组参数发送到 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() call:
$.ajaxSettings.traditional = true;
您可以阅读有关 1.4+ 默认序列化与传统序列化的更多信息$.param()文档,最好的说明是他们的简短示例:
// <=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"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)