2008-07-18

Struts2标签问题-using Struts tags without the associat

关键字: struts2 标签 taglib配置

     最近使用struts,在使用标签的时候,出现了这样一个问题。

     原本使用标签,引用方法是默认配置:

     web.xml:

     

<filter>
  <filter-name>struts2</filter-name>
    <filter-class>
       org.apache.struts2.dispatcher.FilterDispatcher
    </filter-class>
</filter>

<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

     在页面中引用:

  

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

 

 

    由于在使用的web应用中一些特殊应用的关系,web.xml的配置改为:

<filter>
  <filter-name>struts2</filter-name>
    <filter-class>
       org.apache.struts2.dispatcher.FilterDispatcher
    </filter-class>
</filter>
<taglib>
  <taglib-uri>struts-tags</taglib-uri>
  <taglib-location>/WEB-INF/struts2-core-2.0.11.jar</taglib-location>
 </taglib>

<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*.action</url-pattern>
</filter-mapping>

    让sturts过滤器只接受后缀名为action的请求,并把struts标签配置到web.xml文件。

  

    但在使用中,直接访问index.jsp,出现异常:

   

The Struts dispatcher cannot be found.  This is usually caused by using Struts tags without the associated filter. Strut
s tags are only usable when the request has passed through its servlet filter, which initializes the Struts dispatcher n
eeded for this tag. - [unknown location]

 

   在struts2中不能直接使用jsp,引用struts2的标签么?是否有解决的方法?希望大家能不吝赐教!

评论
liuwei1981 2008-07-22
不好意思,struts2的过滤器配置,在实际配置中确实是<url-pattern>*.action</url-pattern> ,在文章里写错了,

另外,关于dtd文件的放置,第三种方法,我的jdk是1.5,dtd文件在META-INFO目录下,运行错误,

第二种方法,我将dtd文件直接放到web-inf目录下,配置文件也按照这个路径配置,还是运行错误
congpeixue 2008-07-21
1.
引用
<url-pattern>/*.action</url-pattern>


你的这一句话 , 就有问题, 个人认为应该为
<url-pattern>*.action</url-pattern>
否则会抛格式化不正确的异常。

2 .
引用
<taglib-location>/WEB-INF/struts2-core-2.0.11.jar</taglib-location>


应该为
    <jsp-config>
    	<taglib>
    	 	 <taglib-uri>struts-tags</taglib-uri>   
	 		 <taglib-location>/WEB-INF/struts2-core-2.0.11.jar/struts-2.0.dtd</taglib-location>   
	 	</taglib>  
    </jsp-config>


这样才能找到dtd的位置。

3 另一种解决办法
如果允许的话 , 你可以把dtd放在META-INFO目录下(前提, 你的jdk版本够高)
发表评论

您还没有登录,请登录后发表评论