java - 使用spring框架的setViewName方法指定视图名称,但是没有跳转到指定页面?
ringa_lee
ringa_lee 2017-04-18 10:28:20
[Java讨论组]

刚接触spring,照着书上敲了个简单的web mvc项目。大致意思是在浏览器输入地址localhost:8080/Ch3_1/hello.mvc后,后台根据请求名称hello调用相应的控制器,然后跳转到视图localhost:8080/Ch3_1/WEB-INF/pages/helloReader.jsp

在使用了spring框架的setViewName方法指定视图名称并返回后,奇怪但是并没有跳转到指定页面,而是跳转到了localhost:8080/Ch3_1/WEB-INF/pages/hello.jsp,由于实际没有这个页面,所以报了404错误。

代码如下:
控制器类:

@Controller
public class HelloWorldController {
    @RequestMapping(value = "/hello")
    public ModelAndView sayHello(){
        ModelAndView mv = new ModelAndView();
        mv.setViewName("helloReader"); //按理应该跳转到helloReader.jsp
        mv.addObject("message","Hello Readder!");
        return mv;
        //return "helloReader";
    }
}

springmvc-servlet.XML:


     
     
         
         
     

web.xml

 
      springmvc
      org.springframework.web.servlet.DispatcherServlet
      1
  
  
      springmvc
      *.mvc
  

不知道是哪里出了问题?
相关环境如下:

找了半天原因原来是ModelAndVeiw 类的包引错了。
应该引入的是: org.springframework.web.servlet.ModelAndView;
而之前引入的是 org.springframework.web.portlet.ModelAndView
不过这个portlet是什么东东呢。。

ringa_lee
ringa_lee

ringa_lee

全部回复(4)
PHP中文网

你设置的springmvc拦截的路径是*.mvc,但是你spring设置的控制器路径只是/hello啊,根本不会交给springmvc处理。应该设置为/hello.mv,这样试试

巴扎黑

可能是定义了一个默认的<welcome-file-list>hello页面,你的路径应该不需要ch3_1

高洛峰

<property name="prefix" value="/WEB-INF/pages/"/>不用加/WEB-INF

巴扎黑

<property name="suffix" value=".jsp"/>
改为
<property name="suffix" value=".mvc"/>

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号