2011-10-24 3 views
1

J'utilise le plugin jquery timepicker et cela fonctionne très bien. Je peux choisir une heure et soumettre mon formulaire. J'utilise Spring MVC 3.0 et le problème vient quand j'essaye d'analyser une chaîne, qui représente le temps, en tant que carlendar java.Chaîne de temps au calendrier

J'ai lu cette conversion date/heure, http://www.odi.ch/prog/design/datetime.php, et il semble assez compliqué. Quelqu'un peut-il s'il vous plaît offrir une forme de conseil. Voici mon code, qui est spécifique au printemps.

@RequestMapping(value = "scheduleadd", method = RequestMethod.POST) 
public String scheduleadd( @Valid Schedule schedule, BindingResult bindingResult, 
          @RequestParam("startdate") @org.springframework.format.annotation.DateTimeFormat(iso=ISO.DATE) java.util.Calendar startdate, 
          @RequestParam("enddate") @org.springframework.format.annotation.DateTimeFormat(iso=ISO.DATE) java.util.Calendar enddate, 
          @RequestParam("starttime") @org.springframework.format.annotation.DateTimeFormat(iso=ISO.NONE) java.util.Calendar starttime, 
          @RequestParam("endtime") @org.springframework.format.annotation.DateTimeFormat(iso=ISO.NONE) java.util.Calendar endtime, 
          @RequestParam("moduleInstanceId") Long mId, Model uiModel, HttpServletRequest httpServletRequest) { //my stuff goes here} 

Comme vous pouvez le voir, je suis en train d'analyser une chaîne comme « 9:30 » comme java Carlendar. Ai-je besoin de la partie date? Comment puis-je spécifier la partie de date?

Répondre

3

Utilisez l'attribut pattern de @DateTimeFormat pour spécifier que les champs "heure" ne sont pas des dates-heures ISO entières, mais uniquement des heures; .: par exemple

... 
@RequestParam("starttime") @DateTimeFormat(pattern="hh:mm") Calendar starttime, 
@RequestParam("endtime") @DateTimeFormat(pattern="hh:mm") Calendar endtime, 
... 

Et dans votre méthode scheduleadd(), combiner les Calendar champs pour obtenir un datetime entièrement formé:

startdate.set(Calendar.HOUR_OF_DAY, starttime.get(Calendar.HOUR_OF_DAY)); 
startdate.set(Calendar.MINUTE, starttime.get(Calendar.MINUTE)); 
... 
Questions connexes