Comment est utilisé @RequestAttribute et @ModelAttribute annotation dans ce Spring MVC vitrine exemple?

Je suis assez nouveau dans Spring MVC.

Dans cette période, j'étudie la Spring MVC vitrine exemple downlodable de STS tableau de bord.

Je vais avoir quelques problèmes de compréhension de la façon Personnalisée, qui peut être Résolu Web Arguments sont traités dans cet exemple.

Dans la pratique, j'ai la situation suivante:

Dans ma maison.jsp vue j'ai le lien suivant:

<a id="customArg" class="textLink" href="<c:url value="/data/custom" />">Custom</a> 

Ce lien générer une Requête HTTP vers l'URL: "/data/custom"

Le contrôleur de la classe qui contient la méthode qui gère cette demande a le code suivant:

@Controller
public class CustomArgumentController {

@ModelAttribute
void beforeInvokingHandlerMethod(HttpServletRequest request) {
    request.setAttribute("foo", "bar");
}


@RequestMapping(value="/data/custom", method=RequestMethod.GET)
public @ResponseBody String custom(@RequestAttribute("foo") String foo) {
    return "Got 'foo' request attribute value '" + foo + "'";
}

 }

La méthode qui traite cette Requête HTTP est custom()

Donc, lorsque le lien est cliqué, la Requête HTTP est gérée par la méthode personnalisée...

J'ai du mal à comprendre ce que les @RequestAttribute annotation.

Je pense que, dans ce cas, il se lie à la demande de l'attribut nommé foo pour une nouvelle String foo variable.

Mais... où est cet attribut prises? Est-ce variable prise par le Printemps?

Ok...mon idée est que cet attribut de la requête est prise à partir d'un HttpServletRequest objet...

Je pense cela parce que, dans cette classe, j'ai aussi ont le beforeInvokingHandlerMethod() méthode qui ont un prononcent le nom...il semble donc que cette méthode seta un attribut, qui ont name=foo et value=bar, à l'intérieur d'un HttpServletRequest objet...et puis si le custom() méthode peut utiliser cette valeur...

En fait mon résultat est:

Got 'foo' request attribute value 'bar'

Pourquoi le beforeInvokingHandlerMethod() appelée avant la custom() méthode?

Et pourquoi le beforeInvokingHandlerMethod() annotée par @ModelAttribute annotation? Qu'est-ce cas signifie?

InformationsquelleAutor AndreaNobili | 2012-12-17