java – Spring @RequestParam和req.getParameter(“xx”)的工作方式不同吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Spring @RequestParam和req.getParameter(“xx”)的工作方式不同吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2219字,纯文字阅读大概需要4分钟。
内容图文
请理解我的英语不好.
我使用Spring MVC并替换了这个源代码
@RequestMapping("/ajax/add_server")
public void addServer(HttpServletRequest request, HttpServletResponse response) throws Exception {
String host = request.getParameter("host");
String port = request.getParameter("port");
String state = request.getParameter("state");
serverService.addServer(host, port, state);
}
至
@RequestMapping("/ajax/add_server")
public void addServer(
@RequestParam("host") String host,
@RequestParam("port") String port,
@RequestParam("state") String state) throws Exception {
serverService.addServer(host, port, state);
}
addServer()方法由AJAX调用.
在使用req.getParameter()的情况下,我的ajax加载图像消失了,但是当我使用@RequestParam时图像没有消失.
我猜Ajax XMLRequest Object没有获得任何成功的MSG.
但我不知道为什么,这是正常的吗?
额外发现!!
@RequestMapping("/ajax/add_server")
public void addServer(
@RequestParam("host") String host,
@RequestParam("port") String port,
@RequestParam("state") String state,
HttpServletResponse response) throws Exception {
serverService.addServer(host, port, state);
}
我添加了对Parameter的响应,然后图像消失了.我不知道为什么.
我留下这个作为参考.
具有void返回类型的Controller方法使用基于URI的VIEW.
例如,以下源使用ajax / add_server.jsp作为视图.
@RequestMapping("/ajax/add_server")
public void addServer(
@RequestParam("host") String host,
@RequestParam("port") String port,
@RequestParam("state") String state) throws Exception {
serverService.addServer(host, port, state);
}
解决方法:
@RequestParam的默认值是该值是必需的,如果没有,它将抛出异常.另一方面,使用getParameter,它只是将null传递给下一个方法.因此,如果有时您没有提供所有三个参数,那么它将无法正常进行更改.
编辑:
关于您发布的其他信息:
AnnotationMethodHandlerAdapter中有一些特殊处理,当void方法将HttpServletResponse作为参数接收时,它会更改路由.基本上它假设自从您接收响应后,您正在处理需要生成的任何输出并禁用默认视图分辨率.这将导致服务器简单地使用空响应主体回复200.
如果您有一个void方法,但没有在HttpResponse对象中读取,则它将恢复为默认视图分辨率.这可能导致生成错误,因为我怀疑你有一个名为add_server的.jsp文件! :)请求sill“工作”,因为您的服务调用已完成并在方法返回并且Spring尝试查看解析之前已提交. ajax调用最终会转到错误处理程序而不是成功处理程序.
tl;博士有时注释控制器“魔法”有点太神奇了:)
内容总结
以上是互联网集市为您收集整理的java – Spring @RequestParam和req.getParameter(“xx”)的工作方式不同吗?全部内容,希望文章能够帮你解决java – Spring @RequestParam和req.getParameter(“xx”)的工作方式不同吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。