Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tomcat下的Spring应用程序无法解析发送到服务器的json对象_Java_Json_Spring_Tomcat - Fatal编程技术网

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

Java Tomcat下的Spring应用程序无法解析发送到服务器的json对象,java,json,spring,tomcat,Java,Json,Spring,Tomcat,我有一个应用程序,它已经正确地将json对象从服务器返回到客户端很长一段时间了,所以我知道我的json过滤器工作正常。然而,当我试图通过Extjs请求发送json对象时,我的服务器将无法接收它。以下是我在客户端的请求: var pdfStore = Ext.StoreMgr.lookup('PDFStore'); pdfStore.loadData([],false); pdfStore.add(Ext.create('PeakDayNew.model.PDFModel', { wind

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

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对象的持有者,PDFModel对象只是列表的集合

Ext.define('PeakDayNew.model.PDFModel'{ 扩展:“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;
}
公共类PdfDataList扩展了ArrayList{
私有静态最终长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.
公共类PDFModel实现可序列化{
私有静态最终长serialVersionUID=-8730795027977637977L;
私有列表daPeakAndMinForecastModelList;
私有列表和所有时间峰值列表;
等等,所有的二传手都是如此。
这个架构在我们编写的另一个应用程序中工作得很好。我正在Eclipse中使用Tomcat 7.0服务器构建这个应用程序,我猜我的Tomcat设置中缺少一些库,因为我可以发送json对象,但是Tomcat会以400个错误请求响应,即使我在帖子中检查负载,它是一个错误的请求有效的json对象

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


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

那么,服务器端没有错误消息?而且不可能检查服务器接收到的json是否有效?这是真的。我可以在控制器的第一行设置断点,但它永远不会到达。Tomcat错误日志没有显示任何内容,我的应用程序日志只显示了一个包含400返回代码的帖子。为了尽量减少可能出现的问题,我制作了一个简单的PDFTestModel,其中包含3个名为Test1、Test2、Test3的字符串,并在服务器端对其进行了匹配。出现了相同的400错误。我这样做只是为了验证我的json w中没有任何奇怪的错误这与我试图在服务器端接收的内容不匹配。也许你应该仔细检查你的URL,以确保它指向正确的服务器。好的,我们发现了一些问题,这很奇怪。在服务器端PDFModel中,我们删除了字段声明前的访问指示符“private”,并删除了“extends Serializable”现在我们可以接收一个空的PDFModel对象。模型的加载应该通过getter/setter方法而不是字段本身来完成,所以这很奇怪,因为它起了作用。但是,如果我将数据加载到对象中,它会再次失败。这表明客户端和服务器对象之间的数据类型不匹配。但是在PDFModel中取消私有修饰符是一种奇怪的修复方法。