2011-01-12 12 views
5

Sto cercando di venire con una buona convenzione per fare richiesta mappature nella mia applicazioneprimavera convenzioni di mappatura richiesta MVC

In questo momento ho

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

, ma questo non è l'ideale in quanto, cercando in l'URL potrebbe non sapere di cercare in RegistrationController per il codice.

C'è un modo per programmitically anteporre il nome del controller di quelle mappature rendendoli:

/registration/registerMerchant 
/registration/registerUser 

risposta

8
Non

di programmazione, ma questo tipo di modello che ho visto lavorare:

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

Detto questo, in passato ho trovato questo estremamente difficile da lavorare nel modo in cui mi aspetterei. Si può fare per funzionare.

+0

hai trovato difficile utilizzare lo schema sopra? perché? inoltre, non sono ancora sposato con questa convention, puoi raccomandare qualche altro modo sano per fare mapping delle richieste? – mkoryak

+1

@mkoryak: È facile da capire, ma Spring MVC non è perfetto per permetterti di diagnosticare quando lo fai anche leggermente male. è il modello migliore che ho incontrato, però. – skaffman

+1

Sono d'accordo che questo può essere un po 'doloroso. La chiave qui è, dopo aver usato un @RequestMapping a livello di classe, assicurandosi che le annotazioni a livello di metodo non inizino con /. – GaryF

4

Penso che **/al livello del metodo sia troppo rumore. Su una nota diversa, l'URI potrebbe essere reso più REST come con più nomi e meno verbi.

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

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

    } 

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

    } 

} 
Problemi correlati