当前位置: 首页 > 知识库问答 >
问题:

为什么Spring Boot强制我使用Thymeleaf模板

宦高岑
2023-03-14

我试图去登录页面在我的Spring Boot应用程序,我得到了这个错误

Circular view path [/login.jsp]: would dispatch back to the current handler URL [/login.jsp] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)

在stackoverflow上,人们给出的建议需要添加一个依赖项

('org.springframework.boot:spring boot starter thymeleaf')

但在那之后我犯了这个错误

There was an unexpected error (type=Internal Server Error, status=500).
Error resolving template "login", template might not exist or might not be accessible by any of the configured Template Resolvers

此错误表示Spring找不到模板登录。html在/resurses/templates文件夹中。如果我有自己的登录名,我应该怎么做。jsp在另一个文件夹中,我不想使用任何模板?

这是我的登录映射

    @RequestMapping(value = "/login", method = RequestMethod.GET)
    public String login(Model model, String error, String logout) {

        if (error != null)
            model.addAttribute("error", "Your username and password is invalid.");

        if (logout != null)
            model.addAttribute("message", "You have been logged out successfully.");

        return "login";
    }

这是我的安全配置

 @Override
 protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                    .antMatchers("/resources/**", "/registration").permitAll()
                    .anyRequest().authenticated()
                    .and()
                .formLogin()
                    .loginPage("/login")
                    .loginProcessingUrl("/login")
                    .permitAll()
                    .and()
                .logout()
                    .permitAll();
 }

共有2个答案

乜嘉悦
2023-03-14

Spring Boot不会强迫你使用,它会鼓励你。

你可以使用。jsp页面如果需要,您需要:

1-将其添加到main类中。java

@Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(MainClass.class);
    }

2-将其添加到应用程序中。属性

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

3-把你的。jsp页面在映射文件夹中,您可以使用。jsp而不是thymeleaf

后烨煜
2023-03-14

简单,只需在控制器中为登录页面创建自己的映射,如:

@Controller
public class AppController{

    @RequestMapping(value = "/login", method = RequestMethod.GET)
    public ModelAndView login(@RequestParam(value = "error", required = false) String error,
            @RequestParam(value = "logout", required = false) String logout, Model model, HttpServletRequest request) {

        ModelAndView view = new ModelAndView();
        if (error != null) {
            view.addObject("error", "Invalid username and password!");
        }

        if (logout != null) {
            view.addObject("msg", "You've been logged out successfully.");
        }

        view.setViewName("your-login-page");  
        return view;
    }
}

配置应该是这样的:

    @Override
            protected void configure(HttpSecurity http) throws Exception {
                http.authorizeRequests().and()
.formLogin().loginPage("/login").loginProcessingUrl("/login").failureUrl("/login?error")
        }

和应用。属性文件应该是这样的:

spring.thymeleaf.suffix=.your-file-type
spring.thymeleaf.prefix=/WEB-INF/jsp-pages/

其中"/WEB-INF/jsp-page/"是您的文件目录

 类似资料:
  • 本文向大家介绍springboot中thymeleaf模板使用详解,包括了springboot中thymeleaf模板使用详解的使用技巧和注意事项,需要的朋友参考一下 这篇文章将更加全面详细的介绍thymeleaf的使用。thymeleaf 是新一代的模板引擎,在spring4.0中推荐使用thymeleaf来做前端模版引擎。 thymeleaf介绍 简单说, Thymeleaf 是一个跟 Vel

  • 本文向大家介绍SpringBoot使用thymeleaf模板过程解析,包括了SpringBoot使用thymeleaf模板过程解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了SpringBoot使用thymeleaf模板过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.导入依赖 2.application.yml文件中新

  • 我有一个Spring Boot 2.1.6应用程序(Spring 5),我想使用Thymeleaf作为我的模板引擎。我按照在线教程来设置我的项目,视图和控制器,当我想启动它时,我注意到Thymeleaf抱怨说它找不到任何模板: 我想我设置的项目,因为它应该是(至少根据教程和论坛,我可以找到): 我的控制器如下所示: login.html是这样的: 当我打开登录页面时,我得到一个简单的超文本标记语言

  • 本文向大家介绍SpringBoot中的Thymeleaf模板,包括了SpringBoot中的Thymeleaf模板的使用技巧和注意事项,需要的朋友参考一下 一、前言     Thymeleaf 的出现是为了取代 JSP,虽然 JSP 存在了很长时间,并在 Java Web 开发中无处不在,但是它也存在一些缺陷: 1、JSP 最明显的问题在于它看起来像HTML或XML,但它其实上并不是。大多数的JS

  • 问题内容: 我正在使用Java 1.6.0_25。 我定义了一个注释: 后来当我使用getAnnotation时: 编译器和IDE同意我必须强制转换结果,但是getAnnotation在Java 1.5文档中声明为: 由于Resource.class是Class类型,在我看来,这意味着cls.getAnnotation(Resource.class)应该返回Resource类型,并且我需要进行强制

  • 请建议如何解决这个问题。我被困在这里了。 下面是错误信息; null