0

我想问一下如何将多个 JSON 对象从客户端传递到服务器端。起初,我从 3rd Party API 获得 JSON 对象。之后,我想将它们传递给服务器端的 Java 方法。这是我尝试过的,但并不成功

在客户端(JSP)

function getInfo(InkBlob){

        var myInkBlob = JSON.stringify(InkBlob);

        jQuery.ajax({
            type: 'POST',
            url: '/webapp/filepicker/importAssets',
            dataType: 'json',
            data: {"inkBlob": myInkBlob}
        });}

jQuery POST 数据为

在此处输入图像描述

如果我不使用 JSON.stringify,结果会是这样,

只是为了说明我是否不使用 JSON.stringify

这是响应传入数据的方法

@RequestMapping(value = "/importAssets", method = RequestMethod.POST)
@ResponseBody
public void importAssets2(String[] inkBlob) throws Exception {

    System.out.println(inkBlob); // print as [Ljava.lang.String;@56bdbbec (and another 2 similar)
    System.out.println(inkBlob.length); // print as 15}

我想使用对象内部的数据。例如,如果我想获取第一个对象的 URL。我只想inkBlob[0].URL。在这个例子中,inkBlob 的预期长度应该是 3,因为只有 3 个对象传递给该方法。我怎样才能做到这一点???

4

2 回答 2

0

Spring 提供了传递从表单提交的完整 bean 的方法

尝试使用这个:这里 InkBlob 是一个包含变量名称和类型的 bean,与在 post 请求中传递的完全相同。

@RequestMapping(value = "/importAssets", method = RequestMethod.POST) @ResponseBody

公共无效importAssets2(@ModelAttribute(inkBlob)InkBlob inkBlob)抛出异常{

............其他代码}

于 2013-09-10T12:57:54.960 回答
0

客户端示例代码

<form:hidden path="fileName" value="xxxx"/>
<input type = "hidden" name = "isWritable" value = "yyyyy"/>
<input type = "hidden" name="mimeType" value="zzzzz"/>
............

</form:form>

And on Server Side Handle it like this  :

@RequestMapping(value = "/importAssets", method = RequestMethod.POST) @ResponseBody

公共无效importAssets2(@ModelAttribute(“inkBlob”)InkBlob inkBlob)抛出异常{

............其他代码}

InkBlob 应该是这样的:

公共类 InkBlob 实现 Serializable { private static final long serialVersionUID = 15463435L;

String fileName;
String isWritable;
String mimeType;
......


public void setFileName(String fileName){
this.fileName = fileName;
}

.... 其他 Getter 和 setter。

}

于 2013-09-13T10:57:29.450 回答