Java+;泽西服务器启动错误
尝试启动服务器时出现以下错误:Java+;泽西服务器启动错误,java,jersey,Java,Jersey,尝试启动服务器时出现以下错误: Error processing resource method, public java.lang.String com.restful.res.UsersWS.getUsersLists(java.lang.Long,java.lang.Boolean,java.lang.Integer,java.lang.Boolean,java.lang.Integer,java.lang.Boolean,java.lang.Integer,java.lang.Boole
Error processing resource method, public java.lang.String com.restful.res.UsersWS.getUsersLists(java.lang.Long,java.lang.Boolean,java.lang.Integer,java.lang.Boolean,java.lang.Integer,java.lang.Boolean,java.lang.Integer,java.lang.Boolean,java.lang.Integer,java.lang.Double,java.lang.Double) throws org.codehaus.jettison.json.JSONException, for ResourceMethodDispatchProvider, com.sun.jersey.server.impl.model.method.dispatch.EntityParamDispatchProvider.
com.sun.jersey.api.container.ContainerException: Could not process parameter type class java.lang.Double
这是我的代码:
@GET
// @Path("/{userId}/users")
public String getUsersLists(@QueryParam("userId") Long userId,
// @PathParam("userId") Long userId,
@DefaultValue("true") @QueryParam("near") Boolean near,
@DefaultValue("0") @QueryParam("nearLimit") Integer nearLimit,
@DefaultValue("true") @QueryParam("pref") Boolean pref,
@DefaultValue("0") @QueryParam("prefLimit") Integer prefLimit,
@DefaultValue("false") @QueryParam("fb") Boolean fb,
@DefaultValue("0") @QueryParam("fbLimit") Integer fbLimit,
@DefaultValue("false") @QueryParam("adBook") Boolean adBook,
@DefaultValue("0") @QueryParam("adBookLimit") Integer adBookLimit,
@DefaultValue("null") @QueryParam("lat") Double lat,
@DefaultValue("null") @QueryParam("lon") Double lon) throws JSONException {
@DefaultValue
注释使用类型的构造函数,该构造函数接受单个字符串
参数
打开jersey的源代码,它会在运行时检查默认值的有效性,这就是为什么会出现异常“null”
对于双精度
来说不是有效的数字,尝试将其传递给构造函数会导致NumberFormatException
,jersery随后将其包装在自己的异常中并重新调用
查看Javadoc中的Double,我能建议的最接近的方法可能是使用“NaN”
(不是数字),然后在代码中检查它。当然,既然你说的是纬度和经度,也许仅仅使用“0.0”
就可以了
编辑以添加:如您问题的评论所述,选项B可能是一种更合理的方法,它将切换到POST并向您的REST调用发送JSON,将其反序列化为POJO并从那里开始。注释使用类型的构造函数,该构造函数接受单个
字符串
参数
打开jersey的源代码,它会在运行时检查默认值的有效性,这就是为什么会出现异常“null”
对于双精度
来说不是有效的数字,尝试将其传递给构造函数会导致NumberFormatException
,jersery随后将其包装在自己的异常中并重新调用
查看Javadoc中的Double,我能建议的最接近的方法可能是使用“NaN”
(不是数字),然后在代码中检查它。当然,既然你说的是纬度和经度,也许仅仅使用“0.0”
就可以了
编辑以添加:正如对您的问题的评论中所指出的,选项B可能是一种更合理的方法,它将切换到POST并向REST调用发送JSON,将其反序列化到POJO并从那里开始。一个方法的许多参数表示强烈的代码气味。我建议您创建一个bean来聚合并来回传递此信息。@Perception-我有点同意,不过您可能只想使用POST而不是GET,并将JSON发送到REST调用,让jersey将其反序列化到POJO。方法的许多参数表明代码味道很浓。我建议您创建一个bean来聚合并来回传递此信息。@Perception-我有点同意,不过您可能只想使用POST而不是GET,并将JSON发送到REST调用,让jersey将其反序列化到POJO。