REST技术第四步 多个参数注解问题
2016-01-14 10:34
162 查看
经过实验,发现在使用@BeanParam注解的查询类字段上。
@FormParam和@QueryParam不能同时加上去,只能加一个,否则会出现取不到数据的情况。
而且在方法参数上两个注解也不能同时加上去。同时加上是一个注解能工作,另外一个不能工作。
我做个实验。
实验结果表明,@QueryParam的优先级高于@PathParam。不仅仅是这样,而且@PathParam好像还失去了作用。比如我把url里的数字改掉,改成字母,绝对不报错的。
这就说明取参数的注解它一定有个优先级问题,同时加在一个字段上,必定会覆盖另一个。这么做就会碰到一种很烦的情况。就是有些参数既可能来自get请求,从URL中取,又可能来自post请求,而且post请求还可能是放在URL里面的。这样的@FormParam和@QueryParam同时加上去就只有一个能起作用。这是很烦的。对于这种情况,可以用@Context注解注入一个HttpServletRequest对象来调用getParameter方法来做。
@FormParam和@QueryParam不能同时加上去,只能加一个,否则会出现取不到数据的情况。
而且在方法参数上两个注解也不能同时加上去。同时加上是一个注解能工作,另外一个不能工作。
我做个实验。
package beanparam; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.QueryParam; @Path("/{b}.htm") public class AddRest { @GET public String process(@PathParam(value = "b") @QueryParam("b") int b){ return "<h1>b = "+b+"</h1>"; } }
实验结果表明,@QueryParam的优先级高于@PathParam。不仅仅是这样,而且@PathParam好像还失去了作用。比如我把url里的数字改掉,改成字母,绝对不报错的。
这就说明取参数的注解它一定有个优先级问题,同时加在一个字段上,必定会覆盖另一个。这么做就会碰到一种很烦的情况。就是有些参数既可能来自get请求,从URL中取,又可能来自post请求,而且post请求还可能是放在URL里面的。这样的@FormParam和@QueryParam同时加上去就只有一个能起作用。这是很烦的。对于这种情况,可以用@Context注解注入一个HttpServletRequest对象来调用getParameter方法来做。
相关文章推荐
- jedis操作工具类
- redis安装
- 来学java吧
- 几种浏览器常见的术语
- CodeForces 466A Cheap Travel
- 动态实现二级下拉框(有点乱)
- Java图形化界面设计——容器(JFrame)
- laravel打印sql
- Java中BigDecimal的8种舍入模式
- c语言 动态数组
- HDFS简介【全面讲解】
- sshd:root@notty解决方法
- android 安装 apk 遭遇 java.lang.UnsupportedOperationException: Only file:// URIs
- 2-sat专题
- java notify wait
- 类 System
- Android Studio中获取SHA1或MD5的方法
- Logcat出错:Could not create the view: For input string:
- 【OpenCV入门指南】第十三篇 人脸检测
- 软件质量的浅谈