***使用spring webflow遇到的问题-2***

404-not found


这个问题当初花了很长时间。


在解决掉版本问题带来的异常,起了服务器之后,输入进入流程的url,发现提示404,找不到页面。


寻找方法

  1. 一开始想的肯定是路径问题。检查了一下路径,确实没有问题, 并且把state中绝对路径和相对路径都试了一遍,结果还是404。

  2. 查日志,开发期间使用的是maven自带的jetty服务器,配置日志显得特别麻烦,最后没有从日志中找到有用的信息。

  3. 检查相关配置。我是通过spring in action这本书使用webflow,当时担心可能是流程注册表等一些配置的问题,仔细检查一遍,没有问题。

  4. 有了线索,检查shiro。突然想到有可能是因为权限,因为我在测试的时候都没有登录,之前将webflow的url定义为不需要权限。我发现,我随便定义几个不需要权限的无意义的url都是会出来404的。也就是说,既不是shiro的问题,也不是webflow的问题。

  5. 找到问题!既然不是webflow的问题,那问题只能又一次出现在整合上面了。再次到stackoverflow上查,终于找到了问题的所在。原来当spring mvc和spring webflow整合的时候,DispatcherServlet在使用mvc的ViewResolver解析url时,如果已经配置的resolver解析不了这个url,它是不知道解析来使用webflow的解析器的。这是个bug,该问题已经报告issue。解决方法有两个。我使用了第一个。


解决方案:
将webflow的resolver强行更改顺序,只需要将它的order属性更改为-1, spring mvc当然会优先考虑webflow的解析器了。基本上都这么配置。

    <!--    定义流程专用的HandlerMapping以及HandlerAdapter -->
    <!--    将请求定向到Spring web flow -->
    <bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
        <property name="flowRegistry" ref="flowRegistry"/>
        <property name="order" value="-1"/>
    </bean>
    <!-- 处理请求web flow -->
    <bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter">
        <property name="flowExecutor" ref="flowExecutor"/>
    </bean>

另一种解决方法:
当时下面还有一个人提出了另外一种方法,那就是使用两个DispatcherServlet,我没有尝试,目测可行,一个配给mvc,一个配给webflow。

stackoverflow原帖链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值