我正在尝试序列化我的表单(JSP / Struts 1.1)并将其放入对象或映射或jQuery的.getJSON()方法所需的任何内容中。这是我的js代码:
// This function makes an AJAX call, passing the entire form to the Action class
function ajaxCallWithForm(inputURL, formName, onReturnFunction)
{
var formAsMap = serializeForm(formName);
$.getJSON(inputURL, formAsMap, onReturnFunction);
}
function serializeForm(formName)
{
var obj = {};
var a = $('#'+formName).serializeArray();
$.each(a, function() {
if (obj[this.name] !== undefined) {
if (!obj[this.name].push) {
obj[this.name] = [obj[this.name]];
}
obj[this.name].push(this.value || '');
} else {
obj[this.name] = this.value || '';
}
});
return obj;
}
这会在后端产生java.lang.IllegalArgumentException
(与BeanUtils.populate servlet方法有关)。
如果我将.getJSON()调用的3个参数中的第2个设置为类似的东西,它可以正常工作并且数据显示在我的Java后端的表单对象中:
// This function makes an AJAX call, passing the entire form to the Action class
function ajaxCallWithForm(inputURL, formName, onReturnFunction)
{
$.getJSON(inputURL, {"vehicleKeyNum":12345,
"vehicleID":"12345",
"rand":Math.random()},
onReturnFunction);
}
我还尝试使用正确的语法创建一个字符串,该语法包含表单中的数据并导致相同的事情。我可能有错误的语法错误。无论如何,我的主要问题是:
1).getJSON()方法接受“带有请求发送到服务器的映射或字符串”。作为其第二个参数(见http://api.jquery.com/jQuery.getJSON/)
2)我正在传递我认为的“地图”
3)我收到了java.lang.IllegalArgumentException
并且不知道从哪里开始
答案 0 :(得分:0)
如果要将表单提交给服务器,可以使用jQuery的serialize() OR serializeArray()方法。
$.getJSON(inputURL, $(formName).serialize(), onReturnFunction);
如果元素名称匹配正确,您应该在表单bean中填充serialize / serializeArray方法返回的数据。
序列化方法的here is a working example(从jQuery网站复制)
来自java.lang.IllegalArgumentException
servlet方法的 BeanUtils.populate
是由于提交的数据与表单bean上的数据之间的数据类型不匹配。