【问题标题】:Can not find the tag library descriptor of springframework找不到springframework的标签库描述符
【发布时间】:2011-05-12 06:35:54
【问题描述】:

我正在尝试遵循 spring JPetStore 的示例,但在引用 lib 标记 spring 的行中的 JSP 页面中出现错误:

找不到“http://www.springframework.org/tags”的标签库描述符

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

这个库的 URL 是什么?

有什么办法可以避免直接依赖这个网址?

提前致谢

【问题讨论】:

  • 你能告诉我下载 Spring Dependency Jar 的链接吗?

标签: java spring jsp spring-mvc jsp-tags


【解决方案1】:

通过右键单击配置构建路径下的JRE系统库->构建路径,将jstl-standard.jar的外部jar添加为外部jar。 它对我有用!

【讨论】:

    【解决方案2】:

    标签库的核心依赖:

    > <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-taglibs</artifactId>
    </dependency>
    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-rest</artifactId>
    </dependency>
    

    【讨论】:

      【解决方案3】:

      我使用的是 Spring-Boot,对我来说,在 Pom.xml 中的以下剪切粘贴有效。可能是文件未同步。

      <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      

      【讨论】:

        【解决方案4】:

        从 Internet 复制粘贴标签库 URL 时通常会出现此问题。通常,嵌入 URL http://www.springframework.org/tags 的引号 "" 可能不正确。尝试删除引号并手动键入它们。这为我解决了这个问题。

        【讨论】:

          【解决方案5】:

          如果你想要直接链接:

          https://github.com/spring-projects/spring-framework/blob/master/spring-webmvc/src/main/resources/META-INF/spring-form.tld

          或来自回购:

          JCenter:link

          Maven 中心:link

          如果你需要作为 Gradle 依赖项:

          编译'org.springframework:spring-webmvc:4.1.6.RELEASE

          更多关于spring-form的信息: http://docs.spring.io/spring/docs/current/spring-framework-reference/html/spring-form.tld.html

          【讨论】:

            【解决方案6】:

            我最初在从 eclipse (kepler) 部署时遇到了与 weblogic 12c 和 maven 相同的问题(从控制台部署没有错误)。

            此页面上提供的其他解决方案没有帮助。

            我在我的war模块的web\WEB-INF文件夹中提取了spring-webmvc jar(我在我的存储库中找到)的spring.tld spring-form.tld文件;

            我做了一个全新的构建;部署(从eclipse)到weblogic 12c,测试应用程序,错误消失了;

            我在删除后再次删除了 spring.tld spring-form.tld 文件;重新构建和重新部署应用程序,错误没有再次出现。

            我仔细检查了这些文件是否在战争中消失了,它们确实不存在。

            希望这可以帮助其他有类似问题的人...

            【讨论】:

              【解决方案7】:

              如果您使用的是 maven,请使用此依赖项:

              <dependency>
                  <groupId>org.springframework.security</groupId>
                  <artifactId>spring-security-taglibs</artifactId>
                  <version>3.1.4.RELEASE</version>
              </dependency>
              

              【讨论】:

                【解决方案8】:
                1. 下载Spring依赖jar
                2. 放到lib文件夹路径是/WEB-INF/lib/spring.jar
                3. 然后打开web.xml,示例代码为:

                  <taglib>
                    <taglib-uri>/WEB-INF/spring.tld</taglib-uri>
                    <taglib-location>/WEB-INF/spring.tld</taglib-location>
                  </taglib>
                  
                4. 那么taglib就指明了jar文件在你系统中的位置。

                  <%@ taglib prefix="spring" uri="/WEB-INF/spring.tld" %>
                  

                【讨论】:

                • 感谢您的回答。刚刚找到了相同的问题解决方案,当我看到您的回复时将在此处提供它
                • 感谢您的回复 JLBarros。
                • 不需要从 JAR 中提取 TLD。
                • 这很奇怪。当我在 Eclipse 中打开项目时,项目显示此错误。当我修改 web.xml 时,错误消失了。但是鉴于 Steven Benitez 的 cmets,我收回了更改......现在没有显示错误!为什么?我不知道...
                • 我在 web.xml 文件中添加了一个空格,保存并为我删除了错误。我只有 WEB-INF/lib 中的 spring-webmvc.jar(没有 tablib 声明)
                【解决方案9】:

                这是另一种情况。

                我们在不同的 portlet 应用程序战争中有几个 portlet,它们都使用 spring。因此,为了减少每次战争的规模,我们在 WebSphere Portal 服务器中为 spring jar 创建了共享库。

                但是,我遇到了与上述相同的问题,即没有从 jsp 文件中引用 spring 表单标签。

                为了解决,我将spring-form.tld文件复制到WEB-INF/目录下,重新部署war,果然奏效了。

                希望对和我有类似问题的人有所帮助。

                【讨论】:

                  【解决方案10】:

                  我最终配置 RAD 来构建基于 Maven 的项目,但是当我导航到使用 Spring taglib 的页面时遇到以下异常:

                  JSPG0047E: 找不到 uri 的标记库 http://www.springframework.org/tags 在 com.ibm.ws.jsp.translator.visitor.tagfiledep.TagFileDependencyVisitor.visitCustomTagStart(TagFileDependencyVisitor.java:76) ...

                  按照我配置 EAR 的方式,所有 jar 都在 EAR 中,而不是在 WAR 的 WEB-INF/lib 中。根据 JSP 2.0 规范,我相信在 WEB-INF 的所有子目录中都会搜索标签库,因此会出现问题。我的解决方案是复制 tld 文件并放在 WEB-INF/lib 或 WEB-INF 下。然后它就起作用了。

                  【讨论】:

                    【解决方案11】:

                    你必须为springs mvc添加依赖

                    在你的 pom 中添加它

                    <!-- mvc -->
                    <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-webmvc</artifactId>
                        <version>3.1.2.RELEASE</version>
                    </dependency>
                    

                    【讨论】:

                      【解决方案12】:

                      我知道这是一个老问题,但标签库http://www.springframework.org/tags 是由spring-webmvc 包提供的。使用 Maven 可以将其添加到项目中,并在 pom.xml 中添加以下行

                      <properties>
                          <spring.version>3.0.6.RELEASE</spring.version>
                      </properties>
                      
                      <dependencies>
                      
                          <dependency>
                              <groupId>org.springframework</groupId>
                              <artifactId>spring-webmvc</artifactId>
                              <version>${spring.version}</version>
                          </dependency>
                      

                      如果没有 Maven,只需将该 jar 添加到您的类路径中。在任何情况下都不需要直接引用 tld 文件,它会自动找到。

                      【讨论】:

                        【解决方案13】:

                        删除 @ 和 taglib 之间的空格对我有用:&lt;%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %&gt;

                        【讨论】:

                        • 我的猜测是删除空间根本没有做任何事情。除了确保 eclipse 对文件进行“更改”并重新验证之外。我认为如果您在其他地方添加/删除了一个空间,它可能会起作用
                        • 只有在我为 taglib 添加了所需的依赖项后,删除/添加空间才有效。除了重新验证之外,删除或添加空间没有任何作用。
                        • 也为我工作,但我的问题是最后的 %&gt; 在结束双引号后没有空格。
                        【解决方案14】:

                        TLD 应位于spring.jar。您的应用程序不会对该 URL 有任何依赖。它只是用作标识标签库的唯一名称。他们也可以将 URI 设为“/spring-tags”,但使用 URL 是很常见的地方。

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 2012-07-05
                          • 2016-11-10
                          • 2015-03-21
                          • 1970-01-01
                          • 2011-01-16
                          • 2011-05-02
                          • 2012-09-02
                          • 2018-10-07
                          相关资源
                          最近更新 更多