Java 如何让Jersey对无效数据强制执行错误的请求响应?
我当前有一个Jersey资源,它以布尔值作为参数,格式如下:Java 如何让Jersey对无效数据强制执行错误的请求响应?,java,rest,jersey,Java,Rest,Jersey,我当前有一个Jersey资源,它以布尔值作为参数,格式如下: public Response getUserInfo( @PathParam("userID") final long userID, @DefaultValue("true") @QueryParam("details") final boolean includeUserDetails) { // ... } 虽然服务本身工作正常,但我注意到Jersey使用Boolean.valueOf将输
public Response getUserInfo(
@PathParam("userID") final long userID,
@DefaultValue("true") @QueryParam("details") final boolean includeUserDetails) {
// ...
}
虽然服务本身工作正常,但我注意到Jersey使用Boolean.valueOf
将输入变量转换为Boolean。这意味着所有不是“true”
的内容都映射到false
如果用户输入了无效值(如“stopid”而不是“false”),有没有办法让Jersey自动响应错误请求
我知道我可以手动转换,但因为这不是唯一的情况和地点,我更喜欢一种全局和自动的方式来拒绝任何明显与错误请求不匹配的输入,包括数字。您是否考虑过抛出a?或者更简单,使用名为valueOf
或fromString
的静态方法定义一个IncludeUserDetails
类,该方法接受一个String
参数,抛出一个它应该起作用的参数。问题是代码中存在许多不同的位置,一个解决方案,比如一个特定的类,意味着我需要编写100个类的代码来抛出错误的请求异常,这实在是太多了。特别是对于布尔情况,我会使用转换器,因为Jersey处理转换的方式。对于其他情况,您可能需要调查