2010-03-06 23 views
5

tarafından sağlanan .tld için bir JSP sayfasında Taglib yönergesi Struts tabanlı bir uygulama geliştiriyorum. Struts'ta yeniyim. JSP sayfasında Struts tarafından sağlanan bir taglib dizininde belirtilen html etiketlerini kullanmak istiyorum.Struts - Strut

Ama nasıl kullanacağını bilmiyorum. Taglib yönergesini nasıl kullanacağımı biliyorum ama kaynaklardan, .tld dosyasının 1.2.8 sürümünden sonra bir .jar dosyasına gömüldüğünü öğrendim. Struts 2.1.8 sürümünü kullanıyorum.

Hangi .jar dosyasında struts-html.tld dosyasının bulunduğunu bilmiyorum.

cevap

6

Bu açıklama amacıyla Struts 1.3.10 kullanıyorum:

  1. burada (http://struts.apache.org/download.cgi#struts1310) son dikmeler kitaplığı indirin. Unutmayın, Tam Dağıtım, Struts TLD'lerle bir savaş dosyası içerdiği için indirmeniz gereken şeydir.
  2. Web uygulamanızda, indirdiğiniz arşiv dosyasındaki tüm kitaplığı /WEB-INF/lib klasörünüze kopyalayın. Eğer Struts TLD en ve JSTL Tld en, /WEB-INF/tld/ klasörünün altına koymak zorunda kez burada (http://java.sun.com/products/jsp/jstl/)
  3. gitmek (dikmeler ile iyi çalışır) JSTL kütüphaneleri için
  4. (o /WEB-INF yer olmalıdır/Klasör). Web.xml günü
  5. <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> 
    

Bu JSP adresinin TLD diyoruz kez sizin Webapp <taglib-uri> eşleşen sonra bakmak arayacaktır söyler (<web-app> elemanı altında) şu şeyler eklemek <taglib-location> adresindeki konumu için arayın ve arayacağınız ilgili sınıfı bulun. JSP günü

, şimdi bunu yapabilirsiniz: Bu yardımcı olur

<%@ 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" %> 

Umut.

+6

ben Struts yapmıyorum, bu yüzden bu konuda bir şey demeyeceğim, ama JSTL için ** JAR dosyası ve dağınıklığı '/ WEB INF' ayıklamak için ** kesinlikle gerek yok gevşek TLD dosyaları ile. Sadece JAR dosyalarını// WEB-INF/lib' içinde bırakarak ve TLD belgelerine göre JSP'nin üstüne taglibs bildirmek JSTL'nin çalışması için yeterlidir. Bu da diğer tüm JSP taglibs'leri için normal bir uygulama olmalıdır: 1) JSP'de classpath (yani,/WEB-INF/lib'), 2) taglib'nin bildirilmesi için JAR dosya (lar) ını bırakın. Bu kadar. Benzer cevap: http://stackoverflow.com/questions/2323645 – BalusC

+0

Teşekkürler ... Bunu bilmiyordum .... Geez, yöntemini deneyeceğim ... –

+0

@ ButalC ... ne MVC altyapıları kullanır mısın? –

1

BalusC doğrudur: her JSP'de /WEB-INF/lib ve uygun bir taglib numaralı JAR dosyalarına ihtiyacınız vardır. Beni ilk kez tetikleyen bir şey, hassas JSP sözdizimi idi; Bazı elemanlar arasındaki boşluklar önemlidir. Çizgili documentation, Çizgili TLD için her taglib gibi görünmelidir başına:

<%@ taglib prefix="stripes" uri="http://stripes.sourceforge.net/stripes.tld" %> 
1

bu soru (bana, anlaşılır) kabul cevap, kendimi ona bir kez daha girmek zorunda hissediyorum bir olsa bile. Gerçek cevap, BalusC'nin yorumunda yer alan ve WEB-INF kodlu .tld dosyalarının gerçekten kötü bir öneride bulunduğunu düşündürmektedir. Amacım bu konuda genişletmek Struts2 tam sürümünü kullanarak OP hakkında soruyor (v2.1.8), Ben indirdiğim Apache's historical archive. Bilmiyorum

  1. hangi desteklerin-html.tld dosyasının bulunduğu dosya .jar.

Struts2 hiçbir struts-html.tld yok - Yerine aşağıdaki vardır: olanlar gibi, struts2-core-2.1.8.jar arasında META-INF dizininde yer alır ve tüm standart Struts etiketleri içeren

  • struts-tags.tld, Struts1’de struts-html.tld’u bulmayı umuyorsunuz. tiles-jsp-2.0.6.jarMETA-INF dizininin bulunduğu
  • tiles-jsp.tld ve Struts1'deki struts-tiles.tld numarasına karşılık gelir.
  • Bazı TLD'ler, ör. SiteMesh için doğrudan soruyla ilgili değil.

    Bir JSP sayfa Struts tarafından sağlanan bir Taglib dizinde belirtilen html etiketleri, kullanmak istediğiniz
  1. . Ama nasıl kullanacağımı bilmiyorum. Taglib yönergesini nasıl kullanacağımı biliyorum ama kaynaklardan, .tld dosyasının 1.2.8 sürümünden sonra bir .jar dosyasına gömüldüğünü öğrendim. doğrudur

. genellikle çalışma şekli şöyledir:

servlet konteyner yukarı başladığında, WEB-INF/lib dizin ve yükleri orada bulduğu .jar dosyaları bakar
  • - Eğer Struts2 kütüphanesini yerleştirmeniz gerekir yerdir.
  • Bu .jar dosyalarının içinde, herhangi bir TLD dosyasının META-INF dizininde bulunması bekleniyor. Açıkça ve yukarıda belirtildiği gibi, bu zaten struts2-core-2.1.8.jar için geçerlidir, bu yüzden yapılması gereken bir şey yoktur.
  • Servlet konteyneri TLD'yi yüklediğinde, <taglib> kök öğesinin içinde <uri> öğesini arar ve bu TLD ile URI arasındaki bir eşlemeyi kaydeder. Buna uygun olarak, bu URI, TLD'ye referans vermek için .jsp dosyalarınızda kullanılır. ... struts2-core-2.1.8.jar durumunda

URI /struts-tags ve böylece (tabii ki beğeninize prefix niteliğini değiştirebilir) böyle bir .jsp dosyada başvuru gerekiyor

<%@ taglib uri="/struts-tags" prefix="s" %> 

... ve daha sonra örneğin Bu:

<s:form action="HelloWorld"> 
    (...) 
</s:form> 
+1

Eh, ikinci kez okuma S1 ile ilgili değil. Ayrıca tam bir cevap için bir tane. –

İlgili konular