2016-12-10 2 views
2

Ich habe die Pakete, aber ich bin mir nicht sicher, wie man es benutzt. Benutze ich sie einfach so wie ich .jsp Dateien?Wie benutzt man Lenker im Frühling MVC?

ich so etwas wie dies versucht haben:

test.hbs

<p>{{message}}</p> 

in meinem Controller:

private static class M { 
    private final String message; 

    public M(String message) { 
     this.message = message; 
    } 

    public String getMessage() { 
     return message; 
    } 
} 

@RequestMapping("/test") 
public ModelAndView testView() { 
    ModelAndView mav = new ModelAndView("test.hbs"); 
    M m = new M("Hello, world!"); 

    mav.addObject("m", m); 

    return mav; 
} 

ich die Störung erhalte: javax.servlet.ServletException : Die Sicht mit dem Namen 'test.hbs' im Servlet mit dem Namen 'Dispatcher' konnte nicht aufgelöst werden

Ich habe test.hbs normalerweise in /WEB-INF/views/test.hbs. Wenn ich eine .jsp-Datei dorthin lege, funktioniert es. Aber aus irgendeinem Grund funktioniert .hbs nicht. Irgendwelche Ideen?

Antwort

6

Die Feder MVC verfügt nicht über eine standardmäßige Unterstützung für Lenker (eine Liste der unterstützten Ansichtstechnologien finden Sie unter official documentation).

Abgesehen davon, ist es einfach, Unterstützung für JVM-basierte Ansichtstechnologie zu Spring MVC hinzuzufügen. Auf einer hohen Ebene erfordert dies die Implementierung einer org.springframework.web.servlet.View und ihrer entsprechenden org.springframework.web.servlet.ViewResolver.

Glücklicherweise gibt es bereits an open source project, die diese Integration bietet. Die folgenden Schritte können ausgeführt werden, um dieses Projekt in eine vorhandene Spring MVC-Anwendung zu integrieren.

Step 1: Add the library to the build system (assuming Maven)

<dependency> 
    <groupId>com.github.jknack</groupId> 
    <artifactId>handlebars-springmvc</artifactId> 
    <version>4.0.6</version> 
</dependency> 

Step 2: Configure a Handlebars ViewResolver for the Spring MVC application in dispatcher-servlet.xml (or equivalent Java configuration)

<bean class="com.github.jknack.handlebars.springmvc.HandlebarsViewResolver"> 
    <property name="prefix" value="/WEB-INF/views/"/> 
    <property name="suffix" value=".hbs"/> 
</bean> 

Step 3: Add Handlebars views to the application

die Konfiguration, die oben gegeben, sollte Lenker Ansichten unter dem /WEB-INF/views/ Ordner hinzugefügt werden.

Step 4: Load Handlebars views

@RequestMapping("/test") 
public ModelAndView testView() { 
    ModelAndView mav = new ModelAndView("test"); 
    M m = new M("Hello, world!"); 

    mav.addObject("m", m); 

    return mav; 
} 

Beachten Sie, dass die Ansicht Name nicht .hbs enthalten sollte, als das Suffix bereits zur Konfiguration hinzugefügt wurde.

+0

Hey, danke für die Erklärung - aber ich brauche das im Frühjahr MVC 4 (mit Anmerkungen und nicht die XML). Ich weiß, wie man eine solche Bean erstellt, aber wie fügt man eine Abhängigkeit hinzu? – zwiebl

+1

Die Abhängigkeit muss zu Ihrer Build-Datei hinzugefügt werden (Maven oder Gradle). Der Code wird mit Spring 3/4 gleichermaßen funktionieren. XML- und Annotations-basierte Konfigurationen sind gleichwertig. Übersetzen Sie einfach die XML-Snippets nach Java. Wenn Sie nicht wissen, wie, lesen Sie in der offiziellen Spring-Dokumentation, die nebeneinander Beispiele für beide zeigt und daraus lernen. – manish

+0

Für Frühling 5 ist die Liste der unterstützten Ansichtstechnologien hier: https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-view – Paul