Struts-директива Taglib на странице JSP для.tld обеспеченный распорками
Я развиваю Struts приложение. Я новичок в Struts. Я хочу использовать html теги, указанные в каталоге taglib, предоставленном Struts, в JSP страница.
но не знаю как использовать его. Я знаю, как использовать директиву taglib, но я узнал из источников, что .файл tld был встроен в a .jar-файл после версии 1.2.8. Я использую распорки версии 2.1.8.
Я не знаю в каком .jar-файл есть.
3 ответов
Я использую стойки 1.3.10 для этой иллюстрации:
- загрузите последнюю библиотеку struts здесь (http://struts.apache.org/download.cgi#struts1310). Помните, что Полный Дистрибутив это то, что вы должны загрузить, поскольку он содержит файл войны с Struts TLD.
- в вашем веб-приложении скопируйте все lib в архивный файл, который вы загрузили в свой .
- для библиотек JSTL (которые работают ну с распорками) иди сюда (http://java.sun.com/products/jsp/jstl/)
- как только у вас есть ваши стойки TLD и JSTL Tld, поместите их под (это должны находиться в папке/ WEB-INF/).
-
на веб.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>
это говорит о том, что как только вы вызовете свой TLD из JSP, ваш webapp будет искать соответствующий <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" %>
надеюсь, что это помогает.
.tld файлы валяются в WEB-INF is плохой совет. Мое намерение расширить это, используя точную версию Struts2, о которой спрашивал OP (v2.1.8), который я скачал из исторический архив Apache.
I не знаю, в каком .jar-файл распорок-в HTML.TLD файл находится.
нет struts-html.tld в Struts2-вместо этого есть следующее:
-
struts-tags.tld, который проживает в наstruts2-core-2.1.8.jarи содержит все стандартные теги Struts, как те, которые вы ожидали бы найти вstruts-html.tldin Struts1. -
tiles-jsp.tld, который проживает в наtiles-jsp-2.0.6.jarи соответствует тому, что былоstruts-tiles.tldin Struts1. - еще несколько дву, например, для SiteMesh, которые непосредственно не связаны с вопросом.
я хочу использовать HTML-теги, указанные в каталоге taglib, предоставленном Struts, на странице JSP. Но не знаю, как им пользоваться. Я знаю, как использовать директиву taglib, но я узнал из источников, что .файл tld был встроен в a .jar-файл после версии 1.2.8.
это правильно. Обычно он работает следующим образом:
- когда контейнер сервлета запускается, он просматривает
WEB-INF/libкаталог и загружает любой.jarфайлы, которые он находит там - это то, где вам нужно разместить библиотеку Struts2. - внутри
.jarфайлы, любые дву должны находиться в . Очевидно, и как упоминалось выше, это уже относится кstruts2-core-2.1.8.jar, так что ничего не нужно делать. - когда контейнер сервлета загружает TLD, он ищет
<uri>элемент внутри корневого элемента<taglib>и сохраняет сопоставление между этим TLD и его URI. Соответственно, этот URI используется в вашем.jspфайлы для ссылки на TLD.
в случае struts2-core-2.1.8.jar, URI /struts-tags и таким образом, вы должны ссылаться на него в .jsp файл, как это (конечно, вы можете изменить prefix атрибут по своему вкусу)...
<%@ taglib uri="/struts-tags" prefix="s" %>
...и впоследствии использовать его, например, так:
<s:form action="HelloWorld">
(...)
</s:form>
BalusC правильно: вам просто нужны файлы JAR в /WEB-INF/lib и правильно taglib в каждом JSP. Одна вещь, которая меня споткнулась изначально, была чувствительным синтаксисом JSP; пробелы между некоторыми элементами важны. За полосы документация, каждый taglib для полос TLD должен выглядеть так:
<%@ taglib prefix="stripes" uri="http://stripes.sourceforge.net/stripes.tld" %>