@Controller类未重定向到指定页面

时间:2018-11-25 05:25:07

标签: java spring-boot spring-web

这是我的Controller类

@Controller
public class PageController {

    @GetMapping(value="/")
    public String homePage() {
        return "index";
    }   
}

我还有一个RestController类

@RestController
public class MyRestController {

    @Autowired
    private AddPostService addPostService;

    @PostMapping("/addpost")
    public boolean processBlogPost(@RequestBody BlogPost blogPost)
    {
        blogPost.setCreatedDate(new java.util.Date());
        addPostService.insertBlogPost(blogPost);

        return true;
    }
}

我已经在Spring Application类的@ComponentScan中包含了所有必需的软件包。

我尝试将index.html页同时放在src/main/resources/staticsrc/main/resources/templates中。但是当我加载localhost:8080时,它会显示Whitelabel error page

在调试时,控件实际上是到达 return "index";,但页面未显示。

2 个答案:

答案 0 :(得分:0)

一种正确的行为是在配置中注册视图并将其保留在src/main/resources/templates/index.html下:

@Configuration
public class MvcConfig implements WebMvcConfigurer {

    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("index");
    }

}

答案 1 :(得分:0)

默认视图解析器将查找名为资源的文件夹(静态和公共)。

因此,将index.html放在/resources/resources/index.html或/resources/static/index.html或/resources/public/index.html

您还需要返回文件和扩展名的完整路径

@Controller
public class PageController {
    @GetMapping(value="/")
    public String homePage() {
        return "/index.html";
    }   
}

这将使您的html页面公开可用(例如http://localhost:8080/index.html将提供该页面)。如果这不是您想要的,那么您需要查看定义视图解析器。