使用 JSP 中的自定义标记文件和 Spring 引导
Using custom Tag files in JSP with Spring Boot
我有一个 Spring 引导项目,我正在尝试在 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>
我收到以下错误:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing
this as a fallback.
Sun Jun 25 16:12:47 IDT 2017 There was an unexpected error
(type=Internal Server Error, status=500). /WEB-INF/jsp/main.jsp
(line: [11], column: [4]) No tag [utils] defined in tag library
imported with prefix [tagz]
我认为这与 Spring 引导中静态文件的配置有关,但我尝试添加
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 中调用 tag/tld 文件时,您需要将它们引用到相对路径,例如:
<%@ taglib prefix="ui" tagdir="/WEB-INF/tags/ui" %>
您还需要在项目结构中定义一个 Facet。如果您没有定义它,则意味着您需要通过将 "web framework" 添加到您的项目来生成它。它会生成web.xml,你需要把它放在webapp/WEB-INF
下,然后在项目Facets中手动编辑它。
希望这对看到这篇文章的人有所帮助post。
我有一个 Spring 引导项目,我正在尝试在 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>
我收到以下错误:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Sun Jun 25 16:12:47 IDT 2017 There was an unexpected error (type=Internal Server Error, status=500). /WEB-INF/jsp/main.jsp (line: [11], column: [4]) No tag [utils] defined in tag library imported with prefix [tagz]
我认为这与 Spring 引导中静态文件的配置有关,但我尝试添加 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 中调用 tag/tld 文件时,您需要将它们引用到相对路径,例如:
<%@ taglib prefix="ui" tagdir="/WEB-INF/tags/ui" %>
您还需要在项目结构中定义一个 Facet。如果您没有定义它,则意味着您需要通过将 "web framework" 添加到您的项目来生成它。它会生成web.xml,你需要把它放在webapp/WEB-INF
下,然后在项目Facets中手动编辑它。
希望这对看到这篇文章的人有所帮助post。