Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/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
Java Jersey Bean验证解释应用程序/x-www-form-url编码为Bean_Java_Rest_Jersey_Javabeans - Fatal编程技术网

Java Jersey Bean验证解释应用程序/x-www-form-url编码为Bean

Java Jersey Bean验证解释应用程序/x-www-form-url编码为Bean,java,rest,jersey,javabeans,Java,Rest,Jersey,Javabeans,我正在使用Jersey RESTful Web服务框架开发REST服务 需要使用url编码的表单内容类型,并将其解释/验证为bean @POST @Path("put") @Consumes("application/x-www-form-urlencoded") @NotNull (message="Couldn't put this bean in the can, sorry") public Response putABean( @Valid final MrBean bean ){ .

我正在使用Jersey RESTful Web服务框架开发REST服务

需要使用url编码的表单内容类型,并将其解释/验证为bean

@POST @Path("put")
@Consumes("application/x-www-form-urlencoded")
@NotNull (message="Couldn't put this bean in the can, sorry")
public Response putABean( @Valid final MrBean bean ){ ... }

当资源使用application/json或application/xml时,这是可能的,但在application/x-www-form-urlencoded的情况下,我收到“415-不支持的媒体类型”响应

我的理解是,这不是开箱即用的支持,需要注册一个与此处类似的功能:
此错误与bean验证无关。第一件事是
application/x-www-form-urlencoded
对于像您的
MyBean
这样的任意类型,都不是
MessageBodyReader
。read只能处理和类型。因此,只有这两种类型可以作为body参数

但还有另一种选择。
@BeanParam
注释允许您创建一个bean来组合任意的
@XxxParam
注释元素,如
@FormParam
@PathParam
@QueryParam
@HeaderParam
等。因此,如果您从提交的表单中知道预期的键,您可以执行以下操作

public class MrBean {

    // validation annotations
    @FormParam("key1")
    private String value1;

    // validation annotations
    @FormParam("key2")
    private String value2;

    // getters setters
}
那你就可以了

public Response putABean( @Valid @BeanParam MrBean bean ){ ... }

此错误与bean验证无关。第一件事是
application/x-www-form-urlencoded
对于像您的
MyBean
这样的任意类型,都不是
MessageBodyReader
。read只能处理和类型。因此,只有这两种类型可以作为body参数

但还有另一种选择。
@BeanParam
注释允许您创建一个bean来组合任意的
@XxxParam
注释元素,如
@FormParam
@PathParam
@QueryParam
@HeaderParam
等。因此,如果您从提交的表单中知道预期的键,您可以执行以下操作

public class MrBean {

    // validation annotations
    @FormParam("key1")
    private String value1;

    // validation annotations
    @FormParam("key2")
    private String value2;

    // getters setters
}
那你就可以了

public Response putABean( @Valid @BeanParam MrBean bean ){ ... }

非常感谢。这是一个非常有用的功能。在相关注释中,这里有完整注释包的参考:谢谢!这是一个非常有用的功能。在相关注释中,这里有整个注释包的参考: