使用struts2标签库时第一次打开报错、第二次打开不报错

一、

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

这是使用struts2最常见的一个错误
我经过测试得知,我们在jsp页面使用struts-tag这个标签库时,我们必须要先过action才能正确使用,不然便会报错!报的就是上面的错误,说的是struts-tags这个标签库必须在request被通过的时候才能使用,我们需要为struts的标签初始化,而要初始化的前提就是进入action!

所以我得到,在我们先进入action后在跳转到jsp页面,在jsp页面使用struts2标签时不会出错,但是如果我们直接进入jsp页面便会出错误!
有些人可能没有遇到,那是因为你在创建struts2的项目时选择的是/×,而不是*.do或者是*.action。
如果你是*.do或者*.action 的方式创建的项目,那你要这样错处理才不会出错误,当然这只是其中的一种方式:
  <filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>*.action</url-pattern>
  </filter-mapping>
  <!-- 记住加入这个配置,不然在使用struts-tag标签会报错误 -->
  <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
  </filter-mapping>

也就是在web.xml中为struts2的的filter-mapping添加一个,把jsp放行,不拦截jsp
等于是你访问jsp等于是进来action,所以这样等于是为struts2-tag标签初始化,你再去使用就不会出错误了!

如果你是直接建的是/*这种struts2的项目就不需要做这一步骤!
二、

原因:在hibernate的映射关系中由于延迟加载,之前的操作使session已经关闭,所以加载set属性时无可用session
解决办法:在映射文件中设置set属性 lazy='false'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值