浏览 14407 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-18
最后修改:2009-01-17
<filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> 最近使用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的标签么?是否有解决的方法?希望大家能不吝赐教!
找到解决方法了,其实只要再加一个过滤设置就可以了:
<filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/struts/*</url-pattern> </filter-mapping>
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间: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版本够高) |
|
返回顶楼 | |
发表时间:2008-07-22
不好意思,struts2的过滤器配置,在实际配置中确实是<url-pattern>*.action</url-pattern> ,在文章里写错了,
另外,关于dtd文件的放置,第三种方法,我的jdk是1.5,dtd文件在META-INFO目录下,运行错误, 第二种方法,我将dtd文件直接放到web-inf目录下,配置文件也按照这个路径配置,还是运行错误 |
|
返回顶楼 | |
发表时间:2008-09-10
在struts2下,任何包含struts2标签的jsp 页面都是不能直接访问的.必须经过action,struts2才会处理到该页面.
|
|
返回顶楼 | |
发表时间:2008-12-16
我就默认配置的没有问题
<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> 我的jdk是1.5 |
|
返回顶楼 | |
发表时间:2008-12-16
zhangqinqin 写道 我就默认配置的没有问题 Java代码 <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> <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> 我的jdk是1.5 我的意思是,在实际情况中不能使用这个默认配置,出现的问题如何解决 |
|
返回顶楼 | |
发表时间:2008-12-16
最后修改:2008-12-16
web.xml下配置
<filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> <init-param> <param-name>struts.action.extension</param-name> <param-value>action</param-value> </init-param> </filter> |
|
返回顶楼 | |
发表时间:2009-04-23
如果一个jsp页面中包含有struts2的标签,那请求信息应该要经过Struts2的FilterDispatcher。个人觉得这点非常不方便,尤其是如果自定义Jsp Filter的话,那会有一大堆没办法解决的问题。
|
|
返回顶楼 | |