将根资源类作为@Singleton
并在类级别同时声明@QueryParam
注释时,
@Singleton
@Path("/")
public class MyResource{
@QueryParam("q1") String q1;
@Path("/test")
public Response getQueryParam(){
return Response.entity(q1).build;
}
}
我在请求时遇到500错误代码的异常,请帮助我如果有人知道此异常的原因。
SEVERE: StandardWrapper.Throwable
com.sun.jersey.spi.inject.Errors$ErrorMessagesException
at com.sun.jersey.spi.inject.Errors.processErrorMessages(Errors.java:170)
at com.sun.jersey.spi.inject.Errors.postProcess(Errors.java:136)
答案 0 :(得分:1)
根据Example 3.24
在应用程序初始化期间,将导致验证失败 单例资源无法注入请求特定参数。该 如果将注入查询参数,则相同的示例将失败 这种单例的构造函数参数。换句话说,如果你愿意的话 一个资源实例来服务更多请求(同时) 不能绑定到特定的请求参数。
由于QueryParam
特定于请求,您无法将其与@Singleton
一起使用
@Context to the rescue!
好消息是你可以注入其他类型的对象,可以使用@Context
注释注入,代理对象用于这些;因此允许用于单身人士:
@Context
private UriInfo urinfo;
private String queryparam;
@GET
@Produces(value = MediaType.APPLICATION_JSON)
public Response bla(){
MultivaluedMap<String, String> params = urinfo.getQueryParameters(true);
queryparam = params.containsKey("yourparam") ?
params.get("yourparam").get(0)
: "not in request";
return Response.ok(queryparam).build();
}