一尘不染

通过Spring Boot在JSP中使用自定义标签文件

jsp

我有一个Spring Boot项目,正在尝试在JSP文件中进行以下调用:

<%@ taglib prefix="tagz" tagdir="/WEB-INF/tags" %>

<tagz:utils tabs="true"/>

标签文件夹位于-

\ src \ main \ resources \ WEB-INF \ tags

JSP文件文件夹位于-

\ src \ main \ resources \ META-INF \ resources \ WEB-INF \ jsp

我还定义了application.properties文件以包括:

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

如果我尝试将标签文件夹放在除Intellij之外的任何其他类路径中,则会显示错误,该错误无法在编辑器中识别该调用。

如果删除taglib调用,将正确显示JSP页面。

我的pom.xml当然具有以下依赖关系:

 <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>1.5.4.RELEASE</version>
    <exclusions>
        <exclusion>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <groupId>org.springframework.boot</groupId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <version>8.5.15</version>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>3.0-alpha-1</version>
</dependency>
<dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>jstl</artifactId>
   <version>1.2</version>
</dependency>

我收到以下错误:

白标错误页面

此应用程序没有针对/ error的显式映射,因此您将其视为后备。

Sun Jun 25 16:12:47 IDT 2017发生意外错误(类型=内部服务器错误,状态= 500)。/WEB-
INF/jsp/main.jsp(行:[11],列:[4])在导入了前缀[tagz]的标签库中未定义标签[utils]

我认为这与Spring Boot中静态文件的配置有关,但是我尝试添加spring.resources.static-

locations=classpath:/resources/static/,classpath:/resources/,classpath:/static/,classpath:/public/,classpath:/WEB-INF/tags/,classpath:/WEB-INF/
spring.mvc.static-path-pattern=/resources/**

似乎没有任何作用。我应该提到这些标签库工作正常!

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>

有什么帮助吗?


阅读 655

收藏
2020-06-10

共1个答案

一尘不染

因此,经过大量的反复试验,现在我将所有JSP文件放入路径中:

webapp/WEB-INF/jsp

标记以下文件:

webapp/WEB-INF/tags

Tlds文件位于:

webapp/WEB-INF/tld

当您在JSP内调用标记/ tld文件时,需要将它们引用到相对路径,例如:

<%@ taglib prefix="ui" tagdir="/WEB-INF/tags/ui" %>

您还需要在项目结构中定义Facet。如果没有定义,则意味着您需要通过在项目中添加“
Web框架”来生成它。它将生成web.xml,您需要将其放置webapp/WEB-INF在项目Facets 下并手动对其进行编辑。

希望这对看到这篇文章的人有所帮助。

2020-06-10