Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在ContainerResponseFilter';s(JAX-RS 2)_Java_Jax Ws_Jax Rs_Cors - Fatal编程技术网

Java 在ContainerResponseFilter';s(JAX-RS 2)

Java 在ContainerResponseFilter';s(JAX-RS 2),java,jax-ws,jax-rs,cors,Java,Jax Ws,Jax Rs,Cors,我正在尝试移植到JAX-RS2 但是,我不知道如何从的重写方法中传递的I get中获取对象(如旧代码中所示) 如果有一种更优雅的方法来使用JAX-RS2实现CORS,那当然会更好。提前感谢。您可以通过ContainerResponseSecontext直接访问响应: @Provider public class ResponseCorsFilter implements ContainerResponseFilter{ @Override public void filter(

我正在尝试移植到JAX-RS2

但是,我不知道如何从的重写方法中传递的I get中获取对象(如旧代码中所示)


如果有一种更优雅的方法来使用JAX-RS2实现CORS,那当然会更好。提前感谢。

您可以通过
ContainerResponseSecontext
直接访问响应:

@Provider
public class ResponseCorsFilter implements ContainerResponseFilter{

    @Override
    public void filter(ContainerRequestContext requestContext,
            ContainerResponseContext responseContext) throws IOException {
           responseContext.getHeaders()
                .putSingle("Access-Control-Allow-Origin","*");
           responseContext.getHeaders()
                 .putSingle("Access-Control-Allow-Methods",
                     "GET, POST, PUT, DELETE");
           List<String> reqHead=requestContext.getHeaders()
                     .get("Access-Control-Request-Headers");
           if(null != reqHead){
                responseContext.getHeaders()
                   .put("Access-Control-Allow-Headers", 
                        new ArrayList<Object>(reqHead));
           }
    }

}
@Provider
公共类ResponseCorsFilter实现ContainerResponseFilter{
@凌驾
公共无效筛选器(ContainerRequestContext requestContext,
ContainerResponseContext(responseContext)引发IOException{
responseContext.getHeaders()
.putSingle(“访问控制允许原点“,”*”);
responseContext.getHeaders()
.putSingle(“访问控制允许方法”,
“获取、发布、放置、删除”);
List reqHead=requestContext.getHeaders()
.get(“访问控制请求头”);
如果(null!=reqHead){
responseContext.getHeaders()
.put(“访问控制允许标头”,
新ArrayList(reqHead));
}
}
}

但是使用此方法如何获得我的响应正文?有
ContainerResponseContext.setEntity
方法可以替换整个实体。谢谢。。。我可以在
ContainerRequestContext
上执行反向操作吗?我的意思是我想从过滤器中的
ContainerRequestContext
获取POJO。从
ContainerRequestContext
中,我们可以从中获得
EntityStream
,但是我想要
Entity
当我们进入
ContainerResponseContext
时,有
ContainerResponseContext.getEntity()
,根据您所需的属性。使用这种类型的过滤器无法获得对象,因为它绑定到请求/响应周期的外部级别。您需要的信息可以通过实现,并使用的方法
procedure()
,传递到
aroundReadFrom