2013-07-03 21 views
23

Ho appena iniziato a utilizzare Spring. Mi sono imbattuto in molti tutorial. Ho visto più esempi utilizzando InternalResourceViewResolver rispetto a UrlBasedViewResolver. Ho esaminato la documentazione di Spring, ma non riesco a capire il vantaggio dell'utilizzo dell'uno o dell'altro. Qualcuno può fornire qualche spiegazione?che differenza tra InternalResourceViewResolver vs UrlBasedViewResolver

risposta

16

InternalResourceViewResolver è una sottoclasse conveniente di UrlBasedViewResolver.

Il JavaDoc descrive alcune proprietà aggiunte a InternalResourceViewResolver che potrebbero essere utili in alcune situazioni:

conveniente sottoclasse di UrlBasedViewResolver che supporta InternalResourceView (cioè servlet e JSP) e sottoclassi come JstlView.

AlwaysInclude: Controlla se l'inoltro o l'inclusione sono terminati.

ExposeContextBeansAsAttributes: Consente a tutti i bean nel contesto di essere disponibili come attributi di richiesta, il che significa che possono essere referenziati da EL in JSP.

ExposedContextBeanNames: Se non null, specifica l'elenco di bean che verranno esposti, a differenza di tutti.

Fonte da forum primavera: Spring Q&A forum

8

La molla supporta un'ampia gamma di tecnologie di visualizzazione. ViewResolvers sono qui per collegare una qualsiasi delle tecnologie di visualizzazione supportate note all'applicazione.

UrlBasedViewResolver è un semplice risolutore di viste che risolve semplicemente le viste di diverse tecnologie, associando i modelli URL ai nomi di file corrispondenti.

UrlBasedViewResolver è qui per supportare tutte le tecnologie di visualizzazione di tipo "AbstractUrlBasedView".

AbstractJasperReportsView, AbstractPdfStamperView, AbstractTemplateView, InternalResourceView, RedirectView, TilesView, XsltView sono sottoclassi noti di AbstractUrlBasedView.

Quindi quando si utilizza UrlBasedViewResolver è possibile utilizzare una qualsiasi delle sottoclassi di AbstractUrlBasedView come tipo di tecnologia di visualizzazione (impostando solo viewClass corrispondente).

InternalResourceViewResolver è una sottoclasse di UrlBasedViewResolver.

Ma quando si utilizza InternalResourceViewResolver, (che è una comoda sottoclasse di UrlBasedViewResolver), è possibile utilizzare solo la tecnologia di tipo InternalResourceView come tecnologia per la vista.

Penso che questo risponda alla tua domanda.

4

InternalResourceViewResolver è infatti sottoclasse di UrlBasedViewResolver.

UrlBasedViewResolver - Il nome di vista viene risolto direttamente su un URL. Non viene fornita alcuna mappatura esplicita. Il nome di visualizzazione è l'URL stesso oppure è possibile aggiungere uno prefix o suffix come da progetto.Puoi anche aggiungere un prefisso come "redirect:" e "forward:" per reindirizzare e inoltrare la richiesta.

InternalResourceViewResolver - Sottoclasse di UrlBasedViewResolver che supporta InternalResourceView. Un InternalResourceView include JSP o altre risorse della stessa app Web. Puoi accedere ai modelli nel JSP usando EL.

NOTA: Alcuni URLBasedViewResolvers (Tiles, Velocity, Freemarker) controllano se la risorsa esiste e restituisce null. Quindi possono essere ovunque nella catena del resolver di visualizzazione. Gli altri devono essere gli ultimi (JSTL/JSP, XSLT, JSON)

Quindi InternalResourceViewResolver deve essere l'ultimo dei resolver della catena di vista poiché risolve il nome della vista se la risorsa effettiva è presente o meno.

Qualche altro URLBasedViewReolver s sono

  1. InternalResourceViewResolver
  2. VelocityViewReolver
  3. FreeMarkerViewReolver
  4. ThymeleafViewResolver
  5. XsltViewReolver
Problemi correlati