2017-04-06 10 views
3

Ich bin mit Federverschluß 1.5.2 und meine Feder Rest Controller sieht aus wie diesesFrühling Rest Controller nicht html Rückkehr

@RestController 
@RequestMapping("/") 
public class HomeController { 

    @RequestMapping(method=RequestMethod.GET) 
    public String index() { 
     return "index"; 
    } 

} 

wenn ich http://localhost:8090/assessment/ gehen es mein Controller erreicht aber nicht zurück mein Index. html, das in einem Maven-Projekt unter src/main/resources oder src/main/resources/static enthalten ist. Wenn ich diese URL http://localhost:8090/assessment/index.html gehe, gibt es meine index.html zurück. Ich schaute auf dieses Tutorial https://spring.io/guides/gs/serving-web-content/ und sie verwenden thymeleaf. Muss ich Thymel oder so etwas für meinen Spring-Rest-Controller verwenden, um meine Sicht zurückzugeben?

sieht Meine Anwendungsklasse wie diese

@SpringBootApplication 
@ComponentScan(basePackages={"com.pkg.*"}) 
public class Application { 

    public static void main(String[] args) throws Exception { 
     SpringApplication.run(Application.class, args); 
    } 
} 

Wenn ich die thymeleaf Abhängigkeit zu meinem Classpath hinzufügen bekomme ich diesen Fehler (500 Antwortcode)

org.thymeleaf.exceptions.TemplateInputException: Error resolving template "index", template might not exist or might not be accessible by any of the configured Template Resolvers 

ich mich thymeleaf brauche erraten? Ich werde jetzt versuchen, es richtig zu konfigurieren.

Es funktioniert nach meiner Controller-Methode zu ändern index.html wie diese

@RequestMapping(method=RequestMethod.GET) 
     public String index() { 
      return "index.html"; 
     } 

ich thymeleaf oder Software denken zurückzukehren, wie es Sie die Dateierweiterung wegzulassen erlaubt, allerdings nicht sicher.

+2

Für den Anfang machen es zu einem [ 'Controller'] (https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/stereotype/Controller.html) anstelle von' RestController' –

+0

Jetzt erreicht es immer noch den Controller, aber ich bekomme einen 404, egal ob die index.html in src/main/resources oder src/main/resources/static ist. http: // localhost: 8090/assessment/index.html funktioniert immer noch – gary69

Antwort

2

Ihr Beispiel würde wie folgt sein:

Ihre Controller-Methode mit der Route "Beurteilung"

@Controller 
public class HomeController { 

    @RequestMapping(value = "/assessment", method = RequestMethod.GET) 
    public String index() { 
     return "index"; 
    } 

} 

Ihre Thymeleaf Vorlage in "src/main/resources/templates/index.html"

<!DOCTYPE HTML> 
<html xmlns:th="http://www.thymeleaf.org"> 
<head> 
    <title>Getting Started: Serving Web Content</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head> 
<body> 
    <p>Hello World!</p> 
</body> 
</html> 
9

RestController Annotation gibt den JSON von der Methode nicht HTML oder JSP zurück. Es ist die Kombination von @Controller und @ResponseBody in einem. Der Hauptzweck von @RestController besteht darin, REST-konforme Webdienste zu erstellen. Um html oder jsp zurückzugeben, muss die Controller-Klasse einfach mit @Controller kommentiert werden.

+0

Ich habe es in @Controller geändert und jetzt bekomme ich eine 404, aber die Zuordnung der Anfrage funktioniert noch. Muss ich eine View Resolver Bean hinzufügen? http: // localhost: 8090/assessment/index.html funktioniert immer noch – gary69

+0

Ist die URL http: // localhost: 8090/assessment/funktioniert? –

+0

Nein das ist, was gibt mir die 404 – gary69

Verwandte Themen