2013-05-30 2 views
3

Я пытался использовать: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 

Это работа. Что я могу сделать для работы с Date?

благодаря

+0

Попробуйте аннотирование ваших параметров даты с '@DateTimeFormat (шаблон = "DDMMYYYY")' –

+0

Я уже пробовал с @DateTimeFormat, но когда я ставлю @PathVariable ("datainicio") @DateTimeFormat (шаблон = "DDMMYYYY") Дату dataInicio, это тоже не работает :-(Работает только со строкой. – user812612

+0

Совет. Попробуйте использовать лучшие практики и передайте эти два значения даты в разделе «Запрос тела» или «Параметры запроса». http://apigee.com/about/api-best-practices =) –

ответ

8

Try:

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

где ISO.DATE имеет yyyy-mm-dd узор.

2

Мне нужно было сделать что-то очень похожее. Это то, что я сделал:

@PathVariable("datainicio") @DateTimeFormat(pattern = "ddMMyyyy") Date dataInicio 

Надеюсь, это поможет!

Смежные вопросы