timo
timo

Reputation: 113

Cannot resolve MVC view "Hello World"

I try to print Hello World, however I got the error Cannot resolve MVC view "Hello World". If I change @Controller to @RestController, then it works. But I don't understand what it has does with the ResponseBody. Many thanks.

Controller class

@Controller
public class HelloResource {
    @RequestMapping({"/hello"})
    public String hello() {
        System.out.println("hello world");
        return "Hello World";
    }
}

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>JWTDemo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>JWTDemo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

Upvotes: 0

Views: 2890

Answers (1)

S. Anushan
S. Anushan

Reputation: 788

If you annotate with @Controller then try to check is there any view available with the template folder if not it will return an error.

if you would like to return any String value then as follow.

@Controller
public class HelloResource {
    @RequestMapping({"/hello"})
    @ResponseBody
    public String hello() {
        System.out.println("hello world");
        return "Hello World";
    }
}

If you would like to return the only JSON for API's then follow with @RestController as below.

 @RestController
    public class HelloResource {
        @RequestMapping({"/hello"})
        public String hello() {
            System.out.println("hello world");
            return "Hello World";
        }
    }

Upvotes: 3

Related Questions