2013-07-03 19 views
23

Właśnie zacząłem używać Spring. Natknąłem się na wiele tutoriali. Widziałem więcej przykładów przy użyciu InternalResourceViewResolver niż UrlBasedViewResolver. Spojrzałem na dokumentację wiosenną, ale nie potrafię zrozumieć korzyści płynących z użycia jednego lub drugiego. Czy ktoś może podać jakieś wyjaśnienie?czym różni się InternalResourceViewResolver od UrlBasedViewResolver

Odpowiedz

16

InternalResourceViewResolver to wygodna podklasa UrlBasedViewResolver.

Javadoc opisuje niektóre dodatkowe właściwości w InternalResourceViewResolver, które mogą być użyteczne w niektórych sytuacjach:

Wygodne podklasą UrlBasedViewResolver który obsługuje InternalResourceView (tj Servlets i JSP) i podklasy, takie jak JstlView.

AlwaysInclude: Określa, czy wykonywane jest przekazywanie dalej lub dołączanie.

ExposeContextBeansAsAttributes: Pozwala, aby wszystkie ziarna w kontekście były dostępne jako atrybuty żądania, co oznacza, że ​​można je przywoływać z EL w JSP.

ExposedContextBeanNames: W przypadku wartości innej niż NULL określa listę fasoli, która będzie wyświetlana, w przeciwieństwie do wszystkich z nich.

Źródło z forum wiosny: Spring Q&A forum

8

Sprężyna obsługuje szeroki zakres technologii widoku. ViewResolvers są tutaj, aby podłączyć dowolną ze znanych technologii obsługiwanych widoków do swojej aplikacji.

UrlBasedViewResolver to prosty algorytm rozpoznawania widoku, który po prostu analizuje widoki różnych technologii, dopasowując wzory do odpowiadających im nazw plików.

UrlBasedViewResolver jest tutaj, aby obsługiwać wszystkie technologie widoku typu "AbstractUrlBasedView".

AbstractJasperReportsView, AbstractPdfStamperView, AbstractTemplateView, InternalResourceView, RedirectView, TilesView, XsltView są znane podklasy AbstractUrlBasedView.

Tak więc podczas korzystania z UrlBasedViewResolver można użyć dowolnej z podklas o numerze AbstractUrlBasedView jako typu technologii widoku (przez ustawienie odpowiedniej tylko klasy ViewClass).

InternalResourceViewResolver jest podklasą UrlBasedViewResolver.

Ale jeśli używasz InternalResourceViewResolver, (która jest wygodną podklasą UrlBasedViewResolver), możesz użyć technologii typu InternalResourceView jako technologii widoku.

Myślę, że to odpowiada na twoje pytanie.

4

InternalResourceViewResolver jest rzeczywiście podklasy UrlBasedViewResolver.

UrlBasedViewResolver - Wyświetl nazwę jest bezpośrednio rozwiązany na adres URL. Brak jest jawnego mapowania. Wyświetl nazwę to sam adres URL lub możesz dodać numer prefix lub suffix zgodnie z projektem.Możesz także prefiksować jako "przekierowanie:" i "przekieruj:", aby przekierować i przesłać dalej żądanie.

InternalResourceViewResolver - Podklasa UrlBasedViewResolver obsługująca InternalResourceView. InternalResourceView zawija JSP lub inny zasób tej samej aplikacji internetowej. Możesz uzyskać dostęp do modeli w JSP przy użyciu EL.

UWAGA: Niektóre URLBasedViewResolvers (płytki, prędkość Freemarker) sprawdzić, czy zasób istnieje i zwraca wartość null. Mogą więc być w dowolnym miejscu w łańcuchu rozwiązywania nazw. Inne muszą być ostatnie (JSTL/JSP, XSLT, JSON).

Tak więc InternalResourceViewResolver musi być ostatnim elementem wywołującym łańcuchy widoku, ponieważ rozpoznaje nazwę widoku, czy obecny zasób występuje, czy nie.

Innym URLBasedViewReolver S są

  1. InternalResourceViewResolver
  2. VelocityViewReolver
  3. FreeMarkerViewReolver
  4. ThymeleafViewResolver
  5. XsltViewReolver
Powiązane problemy