Spring Boot无法从模板加载视图

时间:2018-12-28 07:50:16

标签: spring spring-boot

我的Spring Boot项目没有从 src / main / resources / templates / login.html 加载视图。但是,它确实从 src / main / resources / static / index.html 加载视图。

这是我的项目结构:

enter image description here

我已经添加了简单的<a>标签,用于在 index.html

中打开登录页面
    <div>
        <a class="btn" href="login">Login</a>
    </div>

LoginController:

@RequestMapping("/login")
public String showLogin() {
    System.out.println("Login method called");
    return "login";
}

此方法未调用。此外,我看到许多教程显示您不需要在 static 文件夹中添加视图,只需在 templates 文件夹中添加视图,Spring Boot就会自动选择它。

但是似乎Spring Boot没有从 templates 文件夹中选择视图,而是显示了白色标签错误页面。

我不是在使用jsp页面,而是在Thymelead模板上。

application.properties

server.servlet.context-path=/hisservices

server.port=8081

welcome.message: Welcome to the HIS Services Dashboard

WelcomeController: <-这将显示 index.html 页面

// inject via application.properties
@Value("${welcome.message:test}")
private String message = "Hello World";

@RequestMapping("/")
public String welcome(Map<String, Object> model) {
    model.put("message", this.message);
    return "welcome";
}

我是否需要为 templates 文件夹添加显式映射?

2 个答案:

答案 0 :(得分:1)

IMO,您需要进行程序包重组。

将主应用程序文件(HisserviceJwtApplication.java)移动到 com.skm.hisservice.securejwt 包中,并在 com.skm.hisservice下创建新的包 config 。 securejwt 并移动 SecurityConfig 。无需更改其他软件包。

这样做,您的 LoginController 将通过spring-boot自动扫描,并且也会调用方法 showLogin

如果要继续使用现有的包结构(不建议使用),则将 @ComponentScan('com.skm.hisservice.securejwt.controller')添加到主应用程序文件中。

>

答案 1 :(得分:0)

除非使用 Thymeleaf ,否则Just Spring Boot无法从模板中找到视图。您必须将以下存储库添加到项目中以获得解决方案。这样的方式

main/webapp/WEB-INIF/*.html

在文件application.properties中输入这两行代码

spring.mvc.view.prefix: /WEB-INF/
spring.mvc.view.suffix: .html

现在,运行项目,希望问题得以解决。