successfulroof 2011-12-01 16:41
浏览 236
已采纳

Spring mvc 使用多种viewResolver的问题

问题大概是这样的:我配置了两个viewResovler:
[code="java"]






utf-8

utf-8










text/html;charset=UTF-8

0





text/html;charset=UTF-8
1

[/code]
目的是为了,请求多种视图,viewResovler的order如上图使用
[code="java"]
@RequestMapping(value ="/welcome/user")
public ModelAndView welcome(HttpServletRequest request,HttpServletResponse response,
ModelMap modelMap) {
return new ModelAndView("welcome",modelMap);
//普通转向
}
[/code]
第一次http://localhost:8080/Prj/welcome/user 请求/WEB-INF/velo/目录底下的welcome.vm文件可以正常访问
当我把java代码修改成这样
[code="java"]
@RequestMapping(value ="/welcome/user")
public ModelAndView welcome(HttpServletRequest request,HttpServletResponse response,
ModelMap modelMap) {
return new ModelAndView("welcome",modelMap);
//普通转向
}
[/code]
并且把jspresovler的order改成0,把velocity的resovler改成1
目的就是为了在/WEB-INF/jsp/目录下找不到welcome.jsp文件,按理说servlet会继续在另外一个resovler里面来查找.vm文件
应该是去找 /WEB-INF/veclo/目录底下寻找 welcome.vm文件,但是
当我请求上面的请求的时候,tomcat提示404错误,后台打印 说找不到welcome.jsp文件
是什么原因?
各位大虾?

补充:当我把两个order都设为0的时候,也是可以找到的

  • 写回答

3条回答 默认 最新

  • lwcgglu 2011-12-10 00:23
    关注

    [code="java"]public boolean checkResource(Locale locale) throws Exception {
    return true;
    }[/code]
    罪魁祸首 就是spring实现该方法时返回true,这样相当于view总是存在,从而导致其余视图解析器无法得到解析机会。

    覆盖该方法,应该就可以了。

    [code="java"]public class IcomJstlView extends JstlView {

    public boolean checkResource(Locale locale) throws Exception {
        File file = new File(this.getServletContext().getRealPath("/")+getUrl());
        return file.exists();//判断该jsp页面是否存在
    }
    

    }[/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!