Tomcat下的Spring应用程序无法解析发送到服务器的json对象

时间:2015-01-07 17:14:31

标签: java json spring tomcat

我有一个应用程序已经将json对象从服务器正确地返回到客户端很长一段时间所以我知道我的json过滤器工作正确。但是,当我尝试通过Extjs请求发送一个json对象时,我的服务器cannon接收它。这是我在客户端的请求:

var pdfStore = Ext.StoreMgr.lookup('PDFStore');
pdfStore.loadData([],false);
pdfStore.add(Ext.create('PeakDayNew.model.PDFModel', {
    windSolarAllTimePeakList: Ext.pluck(WindSolarAllTimePeaksStore.data.items, 'data')
}));
var json = Ext.encode(Ext.pluck(pdfStore.data.items, 'data'));
console.log(json);
var myUrl = 'http://localhost:8080/PeakDaySvc/createpdf.json?queryDate=' +        
tradeDateInputValue + "&capMarginText=" + capMarginTextValue + 
"&taText=" + marketIssuesTextValue;

Ext.Ajax.request({
    timeout: 240000,
    url: myUrl,
    jsonData: json,
    scope: this,
    success: function(conn, response, options, eOpts) {
         myMask.hide();
         alert("Success");
[and so on . . . ]

这是我的服务器端,这是一个用Java编写的Spring应用程序

@RequestMapping(value="/createpdf.json", method = RequestMethod.POST)
@ResponseBody
public PdfData getPDF(HttpServletRequest request, HttpServletResponse response,
                            @RequestParam String queryDate, 
                            @RequestParam String capMarginText, 
                            @RequestParam String taText,
                            @RequestBody  PdfDataList pdfDataList) throws   DocumentException, IOException, NamingException, ParseException{

javascript PDFStore对象只是PDFModel对象的持有者,它只是列表的集合。

Ext.define('PeakDayNew.model.PDFModel',{     extend:'Ext.data.Model',

requires: [
    'Ext.data.Field'
],

fields: [
    {
        name: 'daPeakAndMinForecastModelList',
        type: 'auto'
    },
    {
        name: 'windSolarAllTimePeakList',
        type: 'auto'
    },
and so on . . .

我期望在服务器端接收的对象PdfDataList只是列表的包装。

public class PdfDataList  extends ArrayList<PDFModel>{
    private static final long serialVersionUID = 1L;
}

它的PDFModel匹配javascript对象中的列表集。

public class PDFModel implements Serializable{

    private static final long serialVersionUID = -873079502797637977L;

    private List<DAPeakAndMinForecastModel> daPeakAndMinForecastModelList;
    private List<StandardModel> windSolarAllTimePeakList;
and so on with all the setter/getters.

这个架构在我们编写的另一个应用程序中完美运行。我正在使用Tomcat 7.0服务器在Eclipse中构建这个应用程序,我的猜测是我的tomcat设置中缺少一些库,因为我可以发送json对象,但是tomcat响应400 Bad Request,即使我检查了有效负载帖子它是一个有效的json对象。

此外,如果我将控制器更改为不接受@RequestBody PdfDataList pdfDataList而是接受@RequestBody String pdfDataList,那么我会看到json对象的文本。那,以及请求有效负载的检查告诉我,我的客户端正在正确构建json对象。

有没有人知道为什么Tomcat下的Spring应用程序无法解析json对象?

0 个答案:

没有答案