我有一个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]
白标错误页面
此应用程序没有针对/ 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" %>
有什么帮助吗?
因此,经过大量的反复试验,现在我将所有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 下并手动对其进行编辑。
webapp/WEB-INF
希望这对看到这篇文章的人有所帮助。