Struts - Struts 提供的 .tld 的 JSP 页面中的 Taglib 指令

2022-01-16 00:00:00 java struts2 taglib

我正在开发一个基于 Struts 的应用程序.我是 Struts 的新手.我想在 JSP 页面中使用 html tags ,在 Struts 提供的 taglib 目录中指定.

I am developing a Struts based application. I am new to Struts. I want to use html tags , specified in a taglib directory provided by Struts, in a JSP page.

但是不知道怎么用.我知道如何使用 taglib 指令,但我从消息来源得知 .tld 文件在 1.2.8 版本之后已嵌入到 .jar 文件中.我使用的是 Struts 2.1.8 版.

But don't know how to use it. I know how to use taglib directive but I came to know from sources that the .tld file has been embedded in a .jar file after version 1.2.8. I am using Struts version 2.1.8.

我不知道 struts-html.tld 文件位于哪个 .jar 文件中.

I don't know in which .jar file the struts-html.tld file is located.

推荐答案

我正在使用 Struts 1.3.10 进行此插图:

I'm using Struts 1.3.10 for this illustration:

  1. 在此处下载最新的 struts 库 (http://struts.apache.org/download.cgi#struts1310).请记住,完整分发是您必须下载的内容,因为它包含带有 Struts TLD 的 war 文件.
  2. 在您的 Web 应用程序中,将您下载的存档文件中的所有 lib 复制到您的 /WEB-INF/lib 文件夹中.
  3. 对于 JSTL 库(适用于 struts),请访问此处(http://java.sun.com/products/jsp/jstl/)
  4. 一旦您拥有 Struts TLD 和 JSTL Tld,请将它们放在 /WEB-INF/tld/ 文件夹下(它必须位于/WEB-INF/文件夹).
  5. 在 web.xml 上添加以下内容(在 <web-app> 元素下)

  1. Download the latest struts library here (http://struts.apache.org/download.cgi#struts1310). Remember, the Full Distribution is that what you have to download as it contains a war file with the Struts TLD's.
  2. On your web application, copy all the lib in the archive file you downloaded to your /WEB-INF/lib folder.
  3. For JSTL libraries (which works well with struts) go here (http://java.sun.com/products/jsp/jstl/)
  4. Once you have your Struts TLD's and JSTL Tld's, put them under the /WEB-INF/tld/ folder (it must be situated in the /WEB-INF/ folder).
  5. On web.xml add the following stuff (under the <web-app> element)

  <jsp-config>
    <taglib>
        <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
        <taglib-location>/WEB-INF/tld/struts-bean.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
        <taglib-location>/WEB-INF/tld/struts-html.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
        <taglib-location>/WEB-INF/tld/struts-logic.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>
        <taglib-location>/WEB-INF/tld/struts-nested.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
        <taglib-location>/WEB-INF/tld/struts-tiles.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>/WEB-INF/sslext.tld</taglib-uri>
        <taglib-location>/WEB-INF/tld/sslext.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>/WEB-INF/struts-layout.tld</taglib-uri>
        <taglib-location>/WEB-INF/tld/struts-layout.tld</taglib-location>
    </taglib>

    <!-- Sun's JSTL -->
    <taglib>
        <taglib-uri>http://java.sun.com/jstl/fn</taglib-uri>
        <taglib-location>/WEB-INF/tld/fn.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
        <taglib-location>/WEB-INF/tld/fmt.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/fmt-1-0</taglib-uri>
        <taglib-location>/WEB-INF/tld/fmt-1_0.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri>
        <taglib-location>/WEB-INF/tld/fmt-rt.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/fmt-1-0-rt</taglib-uri>
        <taglib-location>/WEB-INF/tld/fmt-1_0-rt.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
        <taglib-location>/WEB-INF/tld/c.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/core-1-0</taglib-uri>
        <taglib-location>/WEB-INF/tld/c-1_0.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>
        <taglib-location>/WEB-INF/tld/c-rt.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/core-1-0-rt</taglib-uri>
        <taglib-location>/WEB-INF/tld/c-1_0-rt.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
        <taglib-location>/WEB-INF/tld/sql.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/sql-1-0</taglib-uri>
        <taglib-location>/WEB-INF/tld/sql-1_0.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri>
        <taglib-location>/WEB-INF/tld/sql-rt.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/sql-1-0-rt</taglib-uri>
        <taglib-location>/WEB-INF/tld/sql-1_0-rt.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
        <taglib-location>/WEB-INF/tld/x.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/x-1-0</taglib-uri>
        <taglib-location>/WEB-INF/tld/x-1_0.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri>
        <taglib-location>/WEB-INF/tld/x-rt.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/x-1-0-rt</taglib-uri>
        <taglib-location>/WEB-INF/tld/x-1_0-rt.tld</taglib-location>
    </taglib>
</jsp-config>

这表明一旦你从 JSP 调用你的 TLD,你的 webapp 将寻找匹配的 然后在 上寻找它的位置. 并找到要调用的相关类.

This tells that once you call your TLD from the JSP, your webapp will look for the matching <taglib-uri> then look for it's location on <taglib-location> and find relevant class to call.

在您的 JSP 上,现在您可以这样做:

On your JSP, now you can do this:

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-layout.tld" prefix="layout"%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jstl/fn" prefix="fn" %>

希望这会有所帮助.

相关文章