Welcher Spring View Resolver spielt gut mit Angulars?

Ich schreibe eine Webanwendung mit anglejs und spring mvc als REST-Dienstanbieter und als Teilansichtsanbieter (ich verwende auch angle-ui-router, damit ich mehrere verschachtelte Partials haben kann). Ich habe derzeit keine Verwendung für Vorlagensprachen, da ich vorhabe, alles in Angular zu tun, aber jeder einzelne View Resolver, den ich ausprobiert habe, hat eine Art Vorlagensprache, die mit Angular kollidiert und entweder die Anwendung zum Absturz bringt und / oder meine Protokolle füllt mit Fehlern.

Zuerst habe ich versucht, InternalResourceViewResolver zu verwenden, aber kein Glück, da es anscheinend nur .jsp-Dateien erwartet und sonst nichts anzeigt.

Dann habe ich versucht, Thymeleaf zu verwenden. Thymeleaf folgt dem XML-Standard, der mich gezwungen hat, den größten Teil meines HTML-Codes neu zu schreiben, um den XML-Anforderungen zu entsprechen&& innerhalb einer ng-show Direktive. Also auch damit kein Glück.

Dann habe ich es mit Velocity versucht. Ich hatte bisher das meiste Glück mit der Geschwindigkeit. Es dient dazu, HTML-Dateien ordentlich zu bedienen, hört nicht auf, wenn Analysefehler auftreten, und ermöglicht es mir, Teilansichten auf die gleiche Weise wie InternalResourceViewResolver zu bedienen. Bei Auftreten von Winkelvariablen mit dem Präfix$ Velocity versucht, 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 weiterhin wie es sollte, aber ich bin nicht derjenige, der einfach Fehler hinterlässt, und ich habe keine Möglichkeit gefunden, VTL zu deaktivieren.

Das ist meine aktuelle Erfahrung mit View Resolvern.

Ich hatte auch die Idee, .html-Dateien als statische Ressourcen zu behandeln (die sie irgendwie sind, bevor Angular es magisch macht)mvc:resources aber ohne view resolver konnte meine anwendung nicht gestartet werden, auch wenn ich die main layout.html als welcome-datei in web.xml festgelegt habe

Meine Frage ist. Was soll ich als View Resolver verwenden, damit es mit anglejs funktioniert, und wenn ich überhaupt View Resolver verwenden soll?

BEARBEITEN: Ich versuche das zu benutzenContentNegotiatingViewResolver und ich bekomme:

DEBUG ContentNegotiatingViewResolver - Requested media types are [text/html] based on Accept header types and producible media types [*/*])
DEBUG ContentNegotiatingViewResolver - No acceptable view found; returning null
DEBUG DispatcherServlet - Could not complete request
javax.servlet.ServletException: Could not resolve view with name 'layout.html' in servlet with name 'springDispatcherServlet'

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

    <mvc:annotation-driven />

    <!-- Resources -->
    <mvc:resources location="/libs/" mapping="/libs/**" />
    <mvc:resources location="/css/" mapping="/css/**" />
    <mvc:resources location="/js/" mapping="/js/**" />
    <!-- Angular application data -->
    <mvc:resources location="/WEB-INF/appjs/" mapping="/appjs/**" />
    <!-- View locations -->
    <mvc:resources location="/WEB-INF/html/" mapping="/**"/>

    <!-- Controllers -->
    <context:component-scan base-package="com.mrplow.controller" />

    <!-- Views -->
    <util:map id="contentMediaTypes">
        <entry key="json" value="application/json" />
        <entry key="html" value="text/html" />
    </util:map>

<!--    <util:list id="defaultViews"> -->
<!--        <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" />       -->
<!--    </util:list> -->

    <bean id="viewResolver" class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"
    p:order="1"
    p:ignoreAcceptHeader="false"
    p:defaultContentType="text/html"
    p:mediaTypes-ref="contentMediaTypes" /> 

LayoutController.java

@Controller
@RequestMapping("/")
public class LayoutController {

    @RequestMapping
    public String getIndexPage() {
        return "layout";
    }
}

Antworten auf die Frage(3)

Ihre Antwort auf die Frage