【问题标题】:Should I be converting to GregorianCalender and how in javascript?我应该转换为公历以及如何在 javascript 中转换?
【发布时间】:2015-05-04 15:12:51
【问题描述】:

我正在尝试使用 ajax 调用将数据传递到我的服务器。有 2 项正在通过;一组作为坐标的浮点数和一组作为字符串的日期。在后端,日期是 XMLGregorianCalendar 对象。我是否需要转换然后通过它们,如果我这样做,我会怎么做?这是我的 ajax 调用的 javascript 函数:

`getResourceNetworkByAoiTime: function(aoi,dateRange){


 var AreaOfInterest  = {eastLon:aoi[0],westLon: aoi[1],southLat:aoi[2],northLat:aoi[3]  };

  var LocalDateTimeRange ={start:dateRange[0],end:dateRange[1]};
  //var JData = {{eastLon:aoi[0],westLon: aoi[1],southLat:aoi[2],northLat:aoi[3]},{start:dateRange[0],end:dateRange[1]}};

  var DTO ={};
   DTO.AreaOfInterest = AreaOfInterest;
   DTO.LocalDateTimeRange =LocalDateTimeRange ;
     var self = this;
     $.ajax({
         cache: false,
         url: cdpeConfig.edcssUrl+"getAllResourceNetworksByAoiAndTime2/",
         type: 'GET',
         contentType:"application/json; charset=utf-8",
         dataType: "json",
        data:JSON.stringify(DTO),
       // data:jsonarg1+jsonarg2,
         success: function(data) {
          Alertify.dialog.alert('Successful AJAX resource network');
         }
       }).fail(function(jqXHR, textStatus, errorThrown) {
         sandbox.emit('error', { action: 'initialError', jqXHR: jqXHR });
       });
 }`

这是javascript调用的方法:

public  List <ResourceNetwork> getAllResourceNetworksByAoiAndTime2(GetAllResourceNetworksByAoiAndTime aoi_dateRange){
ResourceNetworkServiceService resourcenetwork_service_service = new ResourceNetworkServiceService();
ResourceNetworkService resource_service resourcenetwork_service_service.getResourceNetworkServicePort();
List<ResourceNetwork> resource_networks = null;
AreaOfInterest aoi = new AreaOfInterest();
LocalDateTimeRange date_range = new LocalDateTimeRange();
aoi.setEastLon(aoi_dateRange.getArg0().getEastLon());
aoi.setWestLon(aoi_dateRange.getArg0().getWestLon());
aoi.setSouthLat(aoi_dateRange.getArg0().getSouthLat());
aoi.setNorthLat(aoi_dateRange.getArg0().getNorthLat());
date_range.setStart(aoi_dateRange.getArg1().getStart());
date_range.setEnd(aoi_dateRange.getArg1().getEnd());
resource_networks = resource_service.getAllResourceNetworksByAoiAndTime(aoi, date_range);
return resource_networks;
}

感谢大家的帮助!

【问题讨论】:

  • 这些是浏览器调试器中看到的参数AreaOfInterest[eastLon] 29.38216, AreaOfInterest[northLat] 50.847572, AreaOfInterest[southLat] 29.38216, AreaOfInterest[westLon] -121.113228, LocalDateTimeRange[end] 2009-05-27T23:00:00Z, LocalDateTimeRange[start] 2009-05-25T00:00:00Z, _ 1425488522744这是浏览器调试器中的响应No content to map due to end-of-input at [Source: org.apache.catalina.connector.CoyoteInputStream@62dfb013; line: 1, column: 1]

标签: java javascript jquery ajax rest


【解决方案1】:

我假设 aoi_dateRange.getArg1().getStart() 和 aoi_dateRange.getArg1().getEnd() 应该返回 XMLGregorianCalendar 对象,这些对象是从客户端传递到服务器的字符串转换产生的。

这里描述了 XMLGregorianCalendar 对象的字符串表示:

http://docs.oracle.com/javase/7/docs/api/javax/xml/datatype/XMLGregorianCalendar.html#toXMLFormat() http://www.w3.org/TR/xmlschema-2/#dateTime-lexical-representation

例如,以下字符串应该是有效的(未经测试):

2002-10-10T17:00:00Z

如果时间按照 w3c 规范中描述的词汇表示进行格式化,这应该可以工作(恕我直言)。

【讨论】:

  • 我试过了,还是400错误。我尝试将 contentType: 更改为 contentType: text/xml 并收到 500 错误,所以可能是 java 端?
  • 天啊,看起来您正在发送 JSON,但服务器需要 XML。除非您也更改内容本身,否则更改内容类型将无济于事。抱歉忽略了这一点。您是否有包含带注释的 JAX-RS 资源的代码片段?服务器端的函数是如何嵌入的(即它是如何被调用的)?您使用的是哪个 Tomcat 版本?我看到您发出带有正文的 GET 请求,这很不寻常。通常,您要么有一个仅带有 URL 参数的 GET 请求,要么有一个带有正文(XML 或 JSON)的 POST 请求。
  • 问题不在我这边,而是在服务提供商那边
猜你喜欢
  • 2014-11-06
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
相关资源
最近更新 更多