Welcher Spring View Resolver spielt gut mit angularjs?

8

Ich schreibe eine Webapp mit angularjs und spring mvc als REST-Service-Provider und als Teil-View-Provider (ich benutze auch angular-ui-router, damit ich mehrere verschachtelte Partials haben kann). Ich habe derzeit keine Verwendung für Template-Sprachen, da ich alles in eckigen zu tun plane, aber jeder einzelne View Resolver, den ich ausprobiert habe, hat eine Art Template-Sprache, die mit eckigen kollidiert und entweder die Anwendung stürzt und / oder meine Logs füllt mit Fehlern.

Zuerst habe ich versucht, InternalResourceViewResolver zu verwenden, aber kein Glück, da es scheint, dass es nur .jsp-Dateien erwartet und nichts anderes anzeigen wird.

Dann habe ich versucht, Thymeleaf zu verwenden. Thymoleaf folgt dem XML-Standard, der mich dazu zwang, den Großteil meines HTML-Codes neu zu schreiben, um den XML-Anforderungen zu folgen, und nachdem ich das getan hatte, starb er, als ich auf eine && in einer ng-show-Direktive stieß. Also auch kein Glück damit.

Dann habe ich Velocity ausprobiert. Bisher hatte ich das meiste Glück mit der Geschwindigkeit. Es bietet gute HTML-Dateien, stoppt nicht bei Parsing-Fehlern und ermöglicht es mir, partielle Ansichten auf dieselbe Weise zu bedienen, wie es InternalResourceViewResolver tut. Beim Auffinden von Winkelvariablen mit dem Präfix $ versucht Velocity, sie als VTL-Variablen zu analysieren und füllt meine Protokolle mit Nachrichten wie

velocity - Null reference [template 'clients/createOrEdit.html', line 1, column 65] : $invalid cannot be resolved.

Alles funktioniert so, wie es sollte, aber ich bin nicht derjenige, der Fehler einfach zurücklässt, und ich habe keine Möglichkeit gefunden, VTL zu deaktivieren.

Das ist meine aktuelle Erfahrung mit View Resolvern.

Ich hatte auch eine Idee, .html-Dateien als statische Ressourcen zu behandeln (was sie vor eckig sind, ist Magie) mit mvc:resources , aber ohne View Resolver konnte meine Anwendung nicht gestartet werden, selbst wenn ich das Hauptlayout einstelle .html als Willkommensdatei in web.xml

Meine Frage ist. Was sollte ich als View Resolver verwenden, damit es gut mit angularjs abgespielt wird und ob ich sogar View Resolver verwenden sollte?

BEARBEITEN: Ich versuche die ContentNegotiatingViewResolver zu verwenden und bekomme:

%Vor%

webapp-config.xml (contextconfig im Dispatcher-Servlet)

%Vor%

LayoutController.java

%Vor%     
MrPlow 19.07.2014, 08:03
quelle

3 Antworten

9

Um statische Ressource (html, css, img, js) im Frühjahr zu verwenden, verwenden Sie eine Verzeichnisstruktur, die wie folgt aussieht:

%Vor%

layout.html

%Vor%

Beachten Sie, dass /static/img/image.jpg nicht nur /image.jpg ..So gilt für css und js.

ODER

Sie können auch den Content-Verhandlungs-View-Resolver verwenden, wie unten gezeigt:

%Vor%

Spring MVC verwendet "ContentNegoatingViewResolver" (order = 1), um eine geeignete Ansicht (basierend auf der in der Eigenschaft mediaTypes deklarierten Dateierweiterung) zurückzugeben. Wenn nicht übereinstimmend, verwenden Sie "InternalResourceViewResolver" ( order = 2) um eine Standard-JSP-Seite zurückzugeben.

%Vor%

Nun können Sie von Ihrem JSP auch auf Ihre statische HTML-Seite umleiten

%Vor%

index.jsp

%Vor%

Versuchen Sie nun, auf Ihren Dienst zuzugreifen, indem Sie Ссылка / index die oben erwähnte Formularaktion anzeigen. Daraufhin wird die Datei layout.html

angezeigt

Klicken Sie auf eine Schaltfläche oder senden Sie sie in der jsp-Seite, um die Seite layout.html aufzurufen

    
Kuntal-G 19.07.2014, 09:23
quelle
2

Ich denke, dass ContentNegoatingViewResolver der beste View-Resolver ist, weil Sie ihn mit Jackson2 integrieren können, um die Daten in JSON-, XML- oder HTML-Text unter anderen benötigten Antworttypen zu beantworten.

Sehen Sie sich beispielsweise diesen Ansatz an.

Ссылка

    
Dani 19.07.2014 08:51
quelle
1

Für Leute, die nach einer Lösung suchen, wie ContentNegoatingViewResolver in einer neuen Spring-Version funktioniert:

%Vor%

Und danach konfiguriere Erweiterungen, was du in ContentNegotiationManagerFactoryBean brauchst:

%Vor%     
Resd 05.11.2016 13:28
quelle

Tags und Links