带有日期的Spring MVC控制器

时间:2013-05-30 22:18:46

标签: java spring spring-mvc

我一直在尝试使用:

@RequestMapping(value="/consultaporusuarioperiodo/{idusuario}/{datainicio}/{datafim}", method = RequestMethod.GET)
public String consultaPorPeriodoUsuario(
        @PathVariable("idusuario") Long idUsuario,
        @PathVariable("datainicio") Date dataInicio,
        @PathVariable("datafim") Date dataFim
        ,Model model) {
    Usuario usuario = usuarioService.buscaPorId(idUsuario);
    model.addAttribute("timesheet",timeSheetService.buscaPorPeriodoPorUsuario(dataInicio, dataFim,usuario));
    return "timesheetcrud/consultatimesheet";
}

有了这个链接:

http://localhost:8080/timesheet/consultaporusuarioperiodo/1/21012000/22012000

但是我收到了这个错误:

HTTP Status 400 -

type Status report

message

description The request sent by the client was syntactically incorrect ().

Apache Tomcat/7.0.27

当我改为:

        @PathVariable("datainicio") String dataInicio,
        @PathVariable("datafim") String dataFim

这是工作。如何处理日期?

感谢

3 个答案:

答案 0 :(得分:13)

尝试:

    @PathVariable("datainicio") @DateTimeFormat(iso=ISO.DATE) String dataInicio,
    @PathVariable("datafim") @DateTimeFormat(iso=ISO.DATE) String dataFim

其中ISO.DATE属于yyyy-mm-dd模式。

答案 1 :(得分:4)

我必须做一些非常相似的事情。这就是我所做的:

//EDIT CODE

if node.name == "firstButton" {

   if firstButtonClicked  {

   thirdButton.hidden = false
   firstButtonClicked = true

   }

}

if node.name == "secondButton" {
   if secondButtonClicked {

   thirdButton.hidden = false 
   secondButtonClicked = true            
}

希望这有帮助!

答案 2 :(得分:0)

按照Spring的精神,最好的选择应该是采用约定以统一的方式处理Date参数。幸运的是,它恰好为您提供了这个小cookie-将其放在application.properties中,然后……Bob是您的叔叔:

  

spring.mvc.date-format = ddMMyyyy