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.tld
in Struts1. -
tiles-jsp.tld
, который проживает в наtiles-jsp-2.0.6.jar
и соответствует тому, что былоstruts-tiles.tld
in 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" %>