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 для этой иллюстрации:

  1. загрузите последнюю библиотеку struts здесь (http://struts.apache.org/download.cgi#struts1310). Помните, что Полный Дистрибутив это то, что вы должны загрузить, поскольку он содержит файл войны с Struts TLD.
  2. в вашем веб-приложении скопируйте все lib в архивный файл, который вы загрузили в свой .
  3. для библиотек JSTL (которые работают ну с распорками) иди сюда (http://java.sun.com/products/jsp/jstl/)
  4. как только у вас есть ваши стойки TLD и JSTL Tld, поместите их под (это должны находиться в папке/ WEB-INF/).
  5. на веб.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.

  1. 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, которые непосредственно не связаны с вопросом.

  1. я хочу использовать 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" %>