Il est en fait assez simple, même sans ressort @RequestParam
annotations à l'intérieur POJO. Ce que vous cherchez est une coutume WebArgumentResolver
. Voici un exemple complet:
@Service
public class UserArgumentResolver implements WebArgumentResolver {
@Override
public Object resolveArgument(MethodParameter methodParameter, NativeWebRequest webRequest) throws Exception {
if (methodParameter.getParameterType() == User.class) {
return new User(webRequest.getParameter("user"));
}
return WebArgumentResolver.UNRESOLVED;
}
}
code
est plutôt explicite: si l'un des paramètres du gestionnaire est de type User
, récupérer paramètre de requête nommé user
et retournez tout ce que vous voulez (bien sûr, il doit être cessible à User
.. WebArgumentResolver.UNRESOLVED
signifie que le résolveur était incapable de gérer ce paramètre et résolveurs devait être examinée
Malheureusement résolveur ne sont pas repris par défaut, il doit être enregistré:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="customArgumentResolver" ref="userArgumentResolver"/>
</bean>
<mvc:annotation-driven />
Ca y est! Votre gestionnaire peut ressembler à ceci:
@RequestMapping
public void handle(User user) {
//...
}
-1: Pas vrai, Spring va se lier à un POJO, sur la base des noms des propriétés de haricots POJO. Voir la réponse de @ JB. – skaffman