我正在开发基于Struts
的应用程序。我是Struts新手。我想在JSP
页面中使用由Struts
提供的taglib目录中指定的html
标签。Struts提供的.tld的JSP页面中的Struts-Taglib指令
但不知道如何使用它。我知道如何使用taglib指令,但是我从源头知道.tld文件已经在版本1.2.8之后的.jar文件中嵌入。我正在使用Struts版本2.1.8。
我不知道struts-html.tld
文件位于哪个.jar文件中。
我正在开发基于Struts
的应用程序。我是Struts新手。我想在JSP
页面中使用由Struts
提供的taglib目录中指定的html
标签。Struts提供的.tld的JSP页面中的Struts-Taglib指令
但不知道如何使用它。我知道如何使用taglib指令,但是我从源头知道.tld文件已经在版本1.2.8之后的.jar文件中嵌入。我正在使用Struts版本2.1.8。
我不知道struts-html.tld
文件位于哪个.jar文件中。
我使用Struts 1.3.10这说明:
/WEB-INF/lib
文件夹中。/WEB-INF/tld/
文件夹下(这必须将位于/ WEB-INF /文件夹)。在web.xml中添加以下的东西(的<web-app>
元素)
<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,你的web应用将寻找匹配<taglib-uri>
再看看因为它在<taglib-location>
上的位置并找到相关的班级进行呼叫。
在你的JSP,现在你可以这样做:
<%@ 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" %>
希望这有助于。
BalusC正确:您只需要在每个JSP中的/WEB-INF/lib
和适当的taglib
中的JAR文件。最初让我感到不快的一件事是敏感的JSP语法;一些元素之间的空间很重要。即使这个问题有
<%@ taglib prefix="stripes" uri="http://stripes.sourceforge.net/stripes.tld" %>
的(对我来说,不可思议)接受的答案,我觉得有必要在它有一个去自己:每条纹documentation,每个taglib
的条纹TLD应该的样子。真正的答案是包含在BalusC的评论和建议流浪.tld
文件铺设在WEB-INF
是真的很糟糕的意见。我的意图是使用OP所询问的Struts2的准确版本(v2.1.8)进行扩展,我从Apache's historical archive下载了这个版本。
我不知道在哪个.jar文件在struts-html.tld文件的位置。
有在Struts2没有struts-html.tld
- 取而代之的有以下几点:
struts-tags.tld
,它驻留在META-INF
目录struts2-core-2.1.8.jar
并包含所有标准Struts标签,喜欢的人你可以在Struts1中找到struts-html.tld
。tiles-jsp.tld
,它位于META-INF
目录中tiles-jsp-2.0.6.jar
,对应于Struts1中的struts-tiles.tld
。我想使用HTML标记,在Struts提供一个标签库目录中指定,JSP页面。但不知道如何使用它。我知道如何使用taglib指令,但是我从源头知道.tld文件已经在版本1.2.8之后的.jar文件中嵌入。
这是正确的。它通常的工作方式如下:
WEB-INF/lib
目录并加载任何.jar
发现有文件 - 这是你需要的地方Struts2的库。.jar
文件中,任何TLD预计将驻留在META-INF
目录中。很显然,如上所述,这已经是struts2-core-2.1.8.jar
的情况,所以没有什么需要完成的。<taglib>
内查找<uri>
元素并存储该TLD与其URI之间的映射。相应地,您的.jsp
文件中将使用此URI来引用TLD。在struts2-core-2.1.8.jar
的情况下,URI是/struts-tags
,因此你需要引用它在一个.jsp
文件像这样(当然你也可以在prefix
属性改变自己的喜好)...
<%@ taglib uri="/struts-tags" prefix="s" %>
...并随后将其投入使用,如eg这样的:
<s:form action="HelloWorld">
(...)
</s:form>
那么,第二次读它不是S1相关的。加一个完整的答案。 – 2015-08-26 09:11:07
我不做Struts的,所以我不会说什么,但对于JSTL有**完全没有必要**提取JAR文件和杂波的'/ WEB-INF'与宽松的TLD文件。只需将JAR文件放入'/ WEB-INF/lib'中,并根据TLD文档在JSP顶部声明taglib就足以使JSTL正常工作。对于所有其他JSP标签库,这也应该是正常的做法:1)将JAR文件放入类路径中(即'/ WEB-INF/lib'),2)在JSP中声明'taglib'。就这样。类似的答案:http://stackoverflow.com/questions/2323645 – BalusC 2010-03-06 21:57:12
谢谢...我不知道.... Geez,我会尝试你的方法... – 2010-03-07 06:29:39
@BalusC ...那么什么MVC框架你使用? – 2010-03-07 06:31:38