2011-01-12 9 views
5

estoy tratando de llegar con una buena convención para hacer la petición de asignaciones en mi solicitudprimavera

ahora tengo

RegistrationController { 
    @RequestMapping(value="/registerMerchant") 
    ... 
    @RequestMapping(value="/registerUser") 
    ... 
} 

pero esto no es ideal, ya examinado la URL podría no saber mirar en RegistrationController para ver el código.

¿Hay una manera que puede anteponer el nombre programmitically controlador de esas asignaciones haciéndolos:

/registration/registerMerchant 
/registration/registerUser 

Respuesta

8
No

mediante programación, pero este tipo de patrón que he visto trabajar:

@Controller 
@RequestMapping(value="/registration/**") 
RegistrationController { 
    @RequestMapping(value="**/registerMerchant") 
    ... 
    @RequestMapping(value="**/registerUser") 
    ... 
} 

Habiendo dicho eso, en el pasado he encontrado esto extremadamente difícil para trabajar de la manera que esperaba. Es puede estar hecho para trabajar, sin embargo.

+0

¿Encontró el patrón anterior difícil de usar? ¿por qué? Además, todavía no estoy casado con esta convención, ¿pueden recomendar alguna otra forma sensata de realizar asignaciones de solicitudes? – mkoryak

+1

@mkoryak: Es fácil de entender, pero Spring MVC no es excelente para que pueda diagnosticarlo cuando lo hace, incluso ligeramente. Sin embargo, es el mejor patrón que he encontrado. – skaffman

+1

Estoy de acuerdo en que esto puede ser un poco doloroso. La clave aquí es, después de usar un @RequestMapping de nivel de clase, asegurándose de que las anotaciones de nivel de su método no comiencen con /. – GaryF

4

Creo que **/en el nivel del método es demasiado ruido. En una nota diferente, el URI podría hacerse más REST como con más sustantivos y menos verbos.

@Controller 
@RequestMapping("/services") 
public class RegistrationController { 

    @RequestMapping(value = "/merchant/register") 
    public void processMerchantRegistration() { 

    } 

    @RequestMapping(value = "/user/register") 
    public void processUserRegistration() { 

    } 

}