2013-04-08 8 views
5

Le differenze tra @RequestMapping, @ActionMapping e @RenderMapping non sono molto chiare per me. Sembra che tutto quanto sopra in definitiva mappi l'url di una richiesta a un metodo effettivo nel controller. Quindi qual è la differenza? Cosa può essere fatto da @Rendermapping che non può essere fatto da @Requestmapping?Differenza tra @ ActionMapping, @ RequestMapping, @ Rendermapping

risposta

11

@RequestMapping consente di specificare la modalità (MODIFICA, VISTA ecc.) E molte altre opzioni (sebbene non lo stato della finestra). @RenderMapping consente di specificare solo i parametri della richiesta e lo stato della finestra (MAXIMIZED, NORMAL ecc.) Ed è un modo conveniente per indicare una mappatura della richiesta di rendering. Puoi utilizzare entrambe le annotazioni sulla stessa classe. Ad esempio è possibile annotare a livello di classe con RequestMapping per indicare che serve le richieste per la modalità VISTA, quindi al livello del metodo annotare i gestori per richieste specifiche con @RenderMapping (o o @ResourceMapping).

È probabilmente utile dire qualcosa sui diversi tipi di richiesta ora.

Le richieste di rendering vengono utilizzate per il rendering di HTML, quindi in genere si visualizza un JSP o un altro tipo di visualizzazione.

Le richieste di azione vengono utilizzate per eseguire un'azione come la modifica di dati, il caricamento di un file, ecc. È importante notare che ogni richiesta di azione è seguita da una richiesta di rendering. Pertanto, se nella pagina sono presenti due portlet e si effettua una richiesta di azione al portletlet, verrà visualizzata una richiesta di azione seguita da una richiesta di rendering. Il portlet due riceverà appena una richiesta di rendering.

C'è un altro tipo di richiesta, che non accennate, che è anche di interesse

richieste di risorse possono essere utilizzate per il rendering di altri tipi di contenuto. AJAX è un caso di uso comune per le richieste di risorse in quanto sono adatte per restituire JSON o XML, ad esempio.

Le richieste di eventi esistono anche e possono essere utilizzate per la comunicazione tra portlet.

Posso consigliare il Spring portlet docs. Sebbene non coprano bene le annotazioni, spiegano i diversi tipi di richieste e dovresti essere in grado di utilizzare tali informazioni per elaborare le annotazioni.

NB. È possibile utilizzare @RequestMapping per definire richieste di rendering, azioni e risorse se lo si desidera, ma @RenderMapping, @ActionMapping o @ResourceMapping offrono modi più convenienti per farlo.