- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在对象内部使用UriInfo
,我对请求内部的参数进行了验证,我执行了以下操作,但是我仍然得到空值,searchCount
值为空,但是我设置了DefaultValue
,如下所示:
private final UriInfo uriInfo;
private final String LONGITUDE = "lon";
private final String LATITUDE = "lat";
private final @DefaultValue("10000") String RANGE = "range";
private final @DefaultValue("") String EVENT_TYPE = "eType";
private final @DefaultValue("") String PLACE_TYPE = "pType";
private final String SEARCH_COUNT = "count";
public NearByRequestWrapper(UriInfo uriInfo) {
this.uriInfo = uriInfo;
}
@DefaultValue("50") @Size(min = 10, max = 100)
public String searchCount() {
return uriInfo.getQueryParameters().getFirst(SEARCH_COUNT);
}
最佳答案
看来您滥用了 @DefaultValue
注解。请参阅 javadoc 中的以下引用:
<小时/>Defines the default value of request metadata that is bound using one of the following annotations:
PathParam
,QueryParam
,MatrixParam
,CookieParam
,FormParam
, orHeaderParam
. The default value is used if the corresponding metadata is not present in the request.
如果知道您期望收到的参数,则不需要使用 UriInfo
。
您可以使用@QueryParam
方法参数上的注释来映射查询参数,然后使用 @DefaultValue
注释来定义此类参数的默认值:
@Path("foo")
public class MyResource {
@GET
public String searchCount(@QueryParam("lon") String longitude,
@QueryParam("lat") String latitute,
@QueryParam("range") @DefaultValue("10000") String range,
@QueryParam("eType") String eventType,
@QueryParam("pType") String placeType,
@QueryParam("count") @DefaultValue("50") String count) {
...
}
}
或者您可以使用 @QueryParam
在资源方法字段上:
@Path("foo")
public class MyResource {
@QueryParam("lon")
private String longitude;
@QueryParam("lat")
private String latitute;
@QueryParam("range")
@DefaultValue("10000")
private String range;
@QueryParam("eType")
private String eventType;
@QueryParam("pType")
private String placeType;
@QueryParam("count")
@DefaultValue("50")
private String count;
@GET
public String searchCount() {
...
}
}
如果您想在多个资源类中重用查询参数,您可以将它们聚合在一个 bean 中,并使用此类 bean 作为用 @BeanParam
注释的方法参数。 :
public class SearchParams {
@QueryParam("lon")
private String longitude;
@QueryParam("lat")
private String latitute;
@QueryParam("range")
@DefaultValue("10000")
private String range;
@QueryParam("eType")
private String eventType;
@QueryParam("pType")
private String placeType;
@QueryParam("count")
@DefaultValue("50")
private String count;
// Getters and setters
}
@Path("foo")
public class MyResource {
@GET
public String searchCount(@BeanParam SearchParams searchParams) {
...
}
}
<小时/>
@Size
注解可以与上述方法一起使用。
关于java - 带有 DefaultValue 的 JAXRS UriInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48223687/
在调用某些 Rest 服务时,我收到 HK2 reification failed 错误。最近,我将应用程序从 JDK 8 迁移到 Open jdk 12。 我将 AbstractBinder 包从
这是我的代码: import java.net.URI; import javax.ws.rs.core.UriInfo; (...) UriInfo mockUriInfo; Str
我正在尝试设置几个单元测试,但我陷入困境。这是我的服务类别: @Component @Scope("request") @Path("/subscriber/{accNo}/case/") publi
我想使用注释@Context来检索URI @GetMapping(value = "/profile/{username}", produces = MediaType.APPLICATION_JSO
我在将一种方法转换为异步时遇到问题。我使用的是 wildfly 8.2.0,这个方法很好用: @GET @Path("externalCallback") @Produces("text/html")
在修改我的项目代码的过程中,我发现我没有机会将 UriInfo 对象插入到资源类中(使用 @Context 注释)不幸的是,我无法更改方法或构造函数签名以检索资源中的 uriinfo 并将其传递给服务
在 JAX-RS 中,我需要迭代请求中的(任意)给定查询参数...但按照 URI 中的原始顺序! 如果我注入(inject)@Context UriInfo uriInfo,那么我可以使用uriInf
我在对象内部使用UriInfo,我对请求内部的参数进行了验证,我执行了以下操作,但是我仍然得到空值,searchCount值为空,但是我设置了DefaultValue,如下所示: private fi
我的 resteasy 端点接口(interface)声明如下: @Path("/entity") public interface EntitySearchEndpoint { ... @G
我知道我可以解决这个问题,但与将参数从参数映射(应根据 javadoc 解码)中拉出相比,如果使用带注释的查询参数,行为会有所不同,这似乎很奇怪。这是一个错误,还是一个怪癖? @GET @Path("
我正在使用 JAX-RS 创建 RESTful 网络服务。我创建了一个这样的 API: GET /articles?userId= UI 调用此 API 并传递编码 userId,例如: GET /a
我正在为 JERSEY 项目编写单元测试。 对于没有查询字符串的方法,我可以实例化 Controller 并调用该方法。 也适用于路径中的参数,因为它们显示为方法的字符串参数。 但是当我得到 quer
从 JBoss 7 切换到 Wildfly 8 后,我收到一个奇怪的错误。错误是“无法找到类型的上下文数据:javax.ws.rs.core.UriInfo”。 在 REST 处理程序中,我将 Uri
有没有办法以编程方式从javax.rs.ws.core.UriInfo获取矩阵参数?我知道您只需执行 uriInfo.getQueryParameters() 即可将查询参数作为 Multivalue
是否有任何 javax.ws.rs.core.UriInfo 的实现,我可以使用它来快速创建一个实例进行测试。这个界面很长,我只是想测试一下。我不想在这个接口(interface)的整个实现上浪费时间
我遇到过以两种方式注入(inject) UriInfo - @Path("/users/") public class UsersResource { @Context UriInfo uriInfo
我在 HAProxy 反向代理中有一组 IBM Websphere Liberty 配置文件服务器。一切正常,但 HAProxy 正在对请求执行某些操作,因此我无法使用 uriInfo.getBase
所以我有一个 RequestScoped bean,我试图使用 Context 注释将 UriInfo 注入(inject)。该应用程序是一个基于 JAX-RS 的 RESTful Web 服务,在
我在构建 Jersey/Spring RESTful Web 应用程序时遇到问题。我想使用 @PreAuthorize 注释来保护我的端点。但是,我需要访问 UriInfo,因为我确实使用查询参数。
当我获取UriInfo.getPath()时,它会返回getFoo/12345/enable(12345是id)。 我想将其改为 getFoo/id/enable 。 有没有简单的方法?或者只是解析它
我是一名优秀的程序员,十分优秀!