带有Thymeleaf的SpringBoot“未找到GET资源”

时间:2019-01-18 08:37:06

标签: spring-boot thymeleaf

  1. 当我单击 home.html 中的链接时,Spring会显示 GET-找不到资源

  2. 您会在home.th.xml中看到它大吼大叫Mappings(我想这就是@GetMapping如何服务目录主页)。

[EDIT]已将DecoupledLogic.java添加到项目中 [EDIT]添加了MvcConfig文件(在项目中已存在)


MvcConfig.java

@Configuration
public class MvcConfig implements WebMvcConfigurer {

    public void addViewControllers(ViewControllerRegistry registry) {

        registry.addViewController("/").setViewName(ViewNames.HOME);
        registry.addViewController("home").setViewName(ViewNames.HOME);
    }
}

BookCatalogController.java

@Slf4j
@Controller
public class BookCatalogController {

    // == Request methods ==

    // Catalog Simple View
    @GetMapping("Mappings.CATALOG_SIMPLE")
    public String catalogSimple(Model model){

        log.info("catalogSimple method called");

        return ViewNames.CATALOG_SIMPLE;
    }

Mappings.java

// For mapping LINKS to views
public class Mappings {

    // Welcome homepage
    public static final String HOME = "home";

    // Catalog views
    public static final String CATALOG_SIMPLE="catalog-simple";
    // psfs CATALOG_DETAIL = "catalog-detail";

    //== constructor
    private Mappings(){}


}

ViewNames.java

public class ViewNames {

    public static final String HOME = "home";

    public static final String CATALOG_SIMPLE="catalog-simple";

    //==constructor
    private ViewNames(){}
}

catalog-simple.html

<!DOCTYPE html>
<html lang="en">
    <head id="headId">
        <meta charset="UTF-8">
        <title>Title content</title>
    </head>
    <body>
HELLO
    </body>
</html>

DecoupledLogic.java

@Slf4j
@Component
public class DecoupledLogicSetup {

    // == fields ==
    private final SpringResourceTemplateResolver templateResolver;

    // == constructor
    public DecoupledLogicSetup(SpringResourceTemplateResolver templateResolver) {
        this.templateResolver = templateResolver;
    }

    // == init ==
    @PostConstruct
    public void init() {
        templateResolver.setUseDecoupledLogic(true);
        log.info("Decoupled template logic enabled");
    }
}

home.html

<!DOCTYPE html>
<html lang="en">
<head id="headId">
    <meta charset="UTF-8">
    <title>Title content</title>
</head>
<body>


<div align="center">
    <h1 id="welcomeMessage"></h1>


    <h3>
        <a id="goToCatalogSimple"
        href="catalog-simple.html">Go to catalog
        </a>
    </h3>


</div>

</body>
</html>

home.th.xml                       

    <attr sel="#goToCatalogSimple"
          th:href="@{__${T(com.potatospy.bookcatalog.util.Mappings).CATALOG_SIMPLE}__}"
          th:text="#{bc.welcome.gosimplecatalog}"/>
</thlogic>

日志

2019-01-18 18:31:35.154 DEBUG 10948 --- [nio-8080-exec-4] o.s.web.servlet.DispatcherServlet        : GET "/catalog-simple", parameters={}
2019-01-18 18:31:35.155 DEBUG 10948 --- [nio-8080-exec-4] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped to ResourceHttpRequestHandler ["classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/", "/"]
2019-01-18 18:31:35.156 DEBUG 10948 --- [nio-8080-exec-4] o.j.s.OpenEntityManagerInViewInterceptor : Opening JPA EntityManager in OpenEntityManagerInViewInterceptor
2019-01-18 18:31:35.157 DEBUG 10948 --- [nio-8080-exec-4] o.s.w.s.r.ResourceHttpRequestHandler     : Resource not found

2 个答案:

答案 0 :(得分:0)

在控制器类中,BookCatalogController声明方法catalogSimple来接受请求,并且应该在那里定义路由。代替@GetMapping("Mappings.CATALOG_SIMPLE"),使用@GetMapping("/home")

答案 1 :(得分:0)

我不敢相信,但是......

在我的BookCatalogController.java中 我在@GetMapping参数周围有QUOTES

@GetMapping(“ donPutQuoteAroundThisParam”)

所以我现在有

@GetMapping(Mappings.CATALOG_SIMPLE)