2013-02-12 64 views
0

我有一個REST API,可以選擇支持兩個查詢字符串參數:starttimeendtime,這兩個參數都是不言自明的。來自REST API中可選QueryString參數的日曆對象

目前我將WebRequest參數傳遞給我的控制器API並搜索時間戳(編碼爲Long),然後將其轉換爲Calendar

我不知道是否有一種方法可以將Calendar參數自動傳遞給API,而無需處理queryString。喜歡的東西

public Object[] myApi([...], Calendar startTime, Calendar endTime) 

最重要的是,參數必須兩個是可選的(任何可以指定或爲空)

我如何能做到這一點在Spring MVC?當前代碼

例子:

@RequestMapping(value = "/rest/{datatype}", method = RequestMethod.GET, produces = { "application/json" }) 
public @ResponseBody 
Object[] getData(@PathVariable("datatype") String dataType, 
     WebRequest request) throws HttpException { 
    if (dataType == null || "".equals(dataType)) 
     throw new ClientException("Datatype cannot be empty"); 

    Calendar timestampInit = null; 
    if (request.getParameter(PARAMETER_STARTTIME) != null) { 
     try { 
      timestampInit = Calendar.getInstance(); 
      timestampInit.setTimeInMillis(Long.valueOf(request 
        .getParameter(PARAMETER_STARTTIME))); 
     } catch (NumberFormatException ex) { 
      throw new ClientException("Invalid start time", ex); 
     } 
    } 

    Calendar timestampEnd = null; 
    if (request.getParameter(PARAMETER_ENDTIME) != null) { 
     try { 
      timestampEnd = Calendar.getInstance(); 
      timestampEnd.setTimeInMillis(Long.valueOf(request 
        .getParameter(PARAMETER_ENDTIME))); 
     } catch (NumberFormatException ex) { 
      throw new ClientException("Invalid end time", ex); 
     } 
    } 
      [...] 
     } 

回答