Grundsätzlich funktionieren der Zugriff "/" und "/ a" im Browser. Zugriff "/ testme" funktioniert nicht. Fehler ist
2016-03-13 15: 04: 37.709 FEHLER 1933 --- [io-8080-exec-57] o.s.boot.context.web.ErrorPageFilter: Weiterleiten an die Fehlerseite aus Anforderung [/ testmenull] ausnahmsweise [Pfad der Rundansicht [testme.html]: würde zur aktuellen Handler-URL zurückkehren [/XXXX/testme.html] noch einmal. Überprüfen Sie Ihr ViewResolver-Setup! (Hinweis: Diese Kann das Ergebnis einer nicht angegebenen Ansicht sein, aufgrund des Standardansichtsnamens Der Generierung.)]
Ich mache einen String grep, kann aber "ViewResolver" nicht finden. Ich habe keine Ahnung, warum "/" und "/ a" funktionieren. Irgendeine Idee?
pom.xml
<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxxxx</groupId>
<artifactId>Monitor</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<!--<name>Monitor</name>-->
<url>http://maven.Apache.org</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.9.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.1</version>
<scope>provided</scope> <!--for web socket-->
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-Java</artifactId>
<version>5.1.31</version>
</dependency>
<dependency>
<groupId>org.springframework.hateoas</groupId>
<artifactId>spring-hateoas</artifactId>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>Monitor</finalName>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<compilerVersion>1.7</compilerVersion>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--<plugin>-->
<!--<groupId>org.Apache.maven.plugins</groupId>-->
<!--<artifactId>maven-source-plugin</artifactId>-->
<!--<executions>-->
<!--<execution>-->
<!--<id>attach-sources</id>-->
<!--<goals>-->
<!--<goal>jar</goal>-->
<!--</goals>-->
<!--</execution>-->
<!--</executions>-->
<!--</plugin>-->
</plugins>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
</resource>
<resource>
<directory>${basedir}/src/main/Java</directory>
</resource>
</resources>
</build>
</project>
web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://Java.Sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
</web-app>
der Wert von @RequestMapping lautet "testme" und der Wert von return ist auch "testme". Wenn Sie auf "/ testme" zugreifen, wird das Web erneut zu "/ testme" umgeleitet. Dies führt zu einer endlosen Umleitung zu "/ testme".
Wenn Sie Gradle verwenden, müssen Sie Folgendes hinzufügen: compile("org.springframework.boot:spring-boot-starter-thymeleaf")
oder müssen diese Abhängigkeit finden.
Ich habe alle oben genannten Vorschläge ausprobiert und es hat für mich nicht funktioniert. Das Problem wurde jedoch behoben, als ich die Anmerkung in meiner Controller-Klasse von @Controller in @RestController (eine Kombination aus @Controller und @ResponseBody) geändert habe.
Wenn Sie keine Ansicht zurückgeben. Das Hinzufügen von @ResponseBody
zur Antwort hilft jedoch nur einem JSON, einen JSON-Wert anstelle einer Ansicht zurückzugeben.
ZB: @RequestMapping(value="/getList",method = RequestMethod.GET)
public @ResponseBody List<LOne> getLOne(){
Ich denke, wenn alle HTML-Namen korrekt sind, müssen Sie möglicherweise etwas in Ihrer MvcConfig
-Klasse angeben:
@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/home").setViewName("home");
registry.addViewController("/usuario/perfil").setViewName("usuario/perfil");
registry.addViewController("/").setViewName("home");
registry.addViewController("/testme").setViewName("testme");
registry.addViewController("/test").setViewName("test");
registry.addViewController("/login").setViewName("login");
}
}
Dieses Problem ist auf zirkuläre Abhängigkeiten zurückzuführen, die in pom.xml erwähnt werden. Wenn Sie Spring-Boot-Starter-Freemaker verwenden, vermeiden Sie die Verwendung von Spring-Boot-Starter-Web. spring-boot-starter-web ist bereits Teil von spring-boot-starter-freemaker.