Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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
Spring boot 如何从ContainerRequestContext获取数据以构建DTO对象_Spring Boot_Filter_Jersey - Fatal编程技术网

Spring boot 如何从ContainerRequestContext获取数据以构建DTO对象

Spring boot 如何从ContainerRequestContext获取数据以构建DTO对象,spring-boot,filter,jersey,Spring Boot,Filter,Jersey,我是新泽西州的春天。我正在尝试构建一个过滤器来检查请求是否具有正确的参数。这是我要检查的json部分: "request":{ "application":"1 Android Mobile", "version":1 } 数据元素是my VersionTo的一部分: public class VersionDTO { int version; String application; public String getAppli

我是新泽西州的春天。我正在尝试构建一个过滤器来检查请求是否具有正确的参数。这是我要检查的json部分:

"request":{
        "application":"1 Android Mobile",
        "version":1
    }
数据元素是my VersionTo的一部分:

public class VersionDTO {
    int version;
    String application;

    public String getApplication() {
        return application;
    }

    public void setApplication(String application) {
        this.application = application;
    }

    public int getVersion() {
        return version;
    }

    public void setVersion(int version) {
        this.version = version;
    }

}
这是我的过滤器的代码:

    @Override
    public void filter(ContainerRequestContext requestContext) throws FilterException {

        if (isSecureURL(requestContext.getUriInfo().getPath())){}{
            try {

                versionFilterService.setVersionDTO(//here is where I want to pass the VersionDTO object with the data of the requestContext);
            } catch (ServiceException e) {
                    e.printStackTrace();
            }
        }
    }

    private boolean isSecureURL(String url) {
        return !UnSecureUrlEnum.isUnSecureUrl(url);
    }
}
我要做的是从ContainerRequestContext获取数据并构建一个版本,以便将对象传递给我的服务。这可能吗


感谢是前进

不可能在筛选器中获取实体,但是您可以获取请求inputstream,但您需要注意一些事情,因为只有一次可以对其进行流式处理。
看看这个,它可能会对你有所帮助

是的,这是可能的。使用Jersey,您可以在读取流之前对其进行缓冲,从而允许再次读取流。您需要强制转换到Jersey
ContainerRequest
中,在那里可以
bufferEntity()
然后只需
readEntity
即可获得反序列化对象

@Override
public void filter(ContainerRequestContext requestContext) throws FilterException {

    ContainerRequest cr = (ContanerRequest) requestContext;
    cr.bufferEntity();
    VersionDTO dto = cr.readEntity(VersionDTO.class);
}