无法从js到控制器

时间:2017-05-26 18:14:04

标签: javascript java spring

在我的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")

2 个答案:

答案 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