环境 以及 错误显示:
页面代码:
controller 类中:
也就是 路径为 … /tj/rbbtj
分析:
原因是 一步加载时的 controller处理器方法中没有加上**@ResponseBody** 注解
@ResponseBody是作用在方法上的,@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】,在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。 比如异步获取 json 数据,加上 @ResponseBody 后,会直接返回 json 数据。@RequestBody 将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。
上述的错误信息
可以看到是直接去根路径下找rbbtj了.
, 然后就各种考虑问题, 其中一种认为如下的url 写的不对
可能会去修改, 最终你终于 凑对了 程序还真的访问到了这个 controller , 通过debug 数据是真真的传了进来, 可是页面上仍然 报着 404 , 这个时候就开始怀疑世界了 , 哈哈
e 我就是走了这么个路程 !!!
最后加上@ResponseBody注解完事.
总结:
- 异步加载的时候记得加上 @ResponseBody注解
- controller 方法中的@requestMapping 的value值尽量不要和相关页面的名字相同.(xxx.jsp)
- 还有jsp页面中的 如上图的ajax -> datagrid 的 url 一定要注意 : 填相对路径, ajax中, url 填相对路径, (相对的是本jsp 页面是从哪个controller 的 路径跳转过来的, -requestMapping的映射路径)
- 如果修改了注解类似的配置, 一定要重启应用.