在我的javascript代码中,我的格式为MM/DD/YYYY
。我需要通过请求URL将其传递给spring控制器。
我尝试传递为String但由于/
无法做到。
将date(MM/DD/YYYY)
发送给Spring控制器的最佳方法是什么?
js code:
var today = moment(); //it gives date as 05/26/2017
var requestURL = myContextPath + '/processDate/'+today+'/processDateForStack.form
控制器:
@RequestMapping(value = "/{today}/processDateForStack", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public
@ResponseBody
String getprocessStartedDate(@PathVariable("today") String today) throws Exception{
System.out.println("date : " + today); //should display 05/26/2017
//logic here
}
PS:这里我使用日期作为字符串类型,我也可以使用日期类型。
我尝试将js中的日期作为MM-DD-YYYY
从js代码发送,并且在spring控制器中我使用@DateTimeFormat(pattern = "MM-dd-yyyy")
同时声明参数但是抛出了异常。任何建议都会有所帮助。
- 编辑 -
当我从javascript将日期值作为String传递时,spring控制器的今天值为1495823051245
。
当我将日期值作为日期从javascript传递给spring控制器时,下面是生成的异常。
Error: Failed to convert value of type 'java.lang.String' to required type 'java.sql.Date'; nested exception is org.springframework.core.convert.ConversionFailedException
当日期作为日期从js发送到控制器时,我在声明路径变量时使用了@DateTimeFormat(pattern = "MM-dd-yyyy")
。
答案 0 :(得分:0)
使用@DateTimeFormat
时,请确保您使用java.util.Date
而非java.sql.Date
@RequestMapping(value = "/{today}/processDateForStack", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody String getprocessStartedDate(@PathVariable("today") @DateTimeFormat(pattern = "MM-dd-yyyy") java.util.Date today) throws Exception {
}
您也可以使用“MM / dd / yyyy”模式,但在这种情况下,从js代码请求时,您应该使用url编码发送请求。
答案 1 :(得分:0)
在日期表示中将分隔符从/
更改为-
。 Spring使用斜杠来识别路径。另请使用Date
包中的java.util
代替java.sql
。