作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Jersey 2 来公开功能(restful API)。
我想在过滤器级别访问表单参数的地方,我们从 `ContainerRequestContext 访问 pathparam
、queryparam
的方式。
过滤器:-
public class SecurityFilter implements ContainerRequestFilter, ContainerResponseFilter
{
private ResourceInfo ResourceInfo;
// ignore this
public SecurityFilter(ResourceInfo ResourceInfo)
{
}
@Override
public void filter(ContainerRequestContext ctx) throws IOException
{
MultivaluedMap<String, String> pathparam = ctx.getUriInfo().getPathParameters();
MultivaluedMap<String, String> queryparam = ctx.getUriInfo().getQueryParameters();
// Here I want all form parameters
}
// ignore this
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException
{
}
}
那么如何从上面的过滤器中的 ContainerRequestContext
获取表单参数呢?
编辑:
我有一种获取表单数据的方法是
((ContainerRequest) context).bufferEntity();
// Read entity
FormDataMultiPart multiPart = ((ContainerRequest) context).readEntity(FormDataMultiPart.class);
String myValue = multiPart.getField("foo").getValue();
但这不适用于大文件,因为 ((ContainerRequest) context).bufferEntity()
包含内存中的实体,所以 Exceptionorg.glassfish.jersey.server.ContainerException: java. lang.OutOfMemoryError: Java heap space
异常发生。
最佳答案
请参阅我对您的 issue opened against Jersey 的评论.
基本上您已经在编辑后的文本中回答了您的问题。不幸的是,如果您需要处理非常大的实体,此时您需要手动完成繁重的工作(实体流的缓冲、处理、服务和清理)。
关于java - 如何从 ContainerRequestContext 获取表单数据参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26053697/
我是一名优秀的程序员,十分优秀!