我正在開發基於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