web-dev-qa-db-fra.com

Quel est le but du liant init au printemps MVC

Ceci est le code sur Internet pour le classeur init

@InitBinder
public void initBinder(WebDataBinder binder) {
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

    binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}

Quelqu'un peut-il expliquer:

1) Pourquoi est-il utilisé, je veux dire, quel était le problème avant, comment il a été résolu avec cette fonction. donc je veux savoir quel était le problème avec la date d'origine qui a été résolu avec ce format de date?

2) Comment utiliser ce format du point de vue du formulaire JSP, je veux dire, si nous entrons la date au format texte, convertit-il dans un format spécifique puis l'enregistre-t-il?

3) Comment applique-t-on cette mise en forme, je veux dire, devons-nous faire quelque chose dans la classe d'objets?

61
John

1) Avant, vous deviez recourir à l'analyse manuelle de la date:

 public void webmethod(@RequestParam("date") String strDate) {
    Date date = ... // manually parse the date
 }

Vous pouvez maintenant obtenir la date analysée directement:

 public void webmethod(@RequestParam("date") Date date) {
 }

2) Si votre page jsp fournit une date sur le formulaire yyyy-MM-dd vous pouvez le récupérer en tant qu'objet Date directement dans votre contrôleur.

3) Spring essaie contre tous les éditeurs enregistrés pour voir si les valeurs peuvent être converties en objets. Vous n'avez rien à faire dans l'objet lui-même, c'est la beauté de celui-ci.

57
Johan Sjöberg