Java 可为空的双路径参数出错

Java 可为空的双路径参数出错,java,web-services,jersey,Java,Web Services,Jersey,我有休息服务: @POST @Path("/shop/{prodID}/{price}") public Response updatePrice(@PathParam("prodID") Long prodID, @PathParam("price") Double price) { priceDAO.updatePrice(prodID, price); return Response.ok().build(); } 如果我为UI发送数字,它们工作得很好,但

我有休息服务:

@POST
@Path("/shop/{prodID}/{price}")
public Response updatePrice(@PathParam("prodID") Long prodID, @PathParam("price") Double price) {
        priceDAO.updatePrice(prodID, price);
        return Response.ok().build();
}
如果我为UI发送数字,它们工作得很好,但如果发送空参数(null),我有错误:

sitesurl/shop/33/null 404 Not Found

在控制台上

如果null作为字符串(“null”)发送,我们可以看到NumberFormatException


为什么我的服务无法解析可为null的PathParam

chrylis如果您不提供任何路径参数,它将抛出一个404未找到的资源

我同意chrylisformparam是个好主意。 然后,您应该确保在发送请求时路径参数不为null并且符合资源规范。对于长字符串或双字符串,不应发送。 另一种摆脱的方法是将资源规范保持为字符串,并手动转换为Long等。。
有一种方法可以很好地处理ParamexOption。创建一个实现ExceptionMapper的映射程序,并抛出自定义响应

如果根本没有任何响应,会发生什么?(还要注意,对于更新,您确实应该将价格作为表单元素而不是路径参数包含在内。)我在更新任何单元格表单网格后发送请求。例如,我有一个带有prodName的网格,其他列,id为33的产品的价格-用户编辑价格,我只发送和更新此产品的价格。我有任何网格列的服务:updatePrice、updateName、updateLocation等。。。
Class java.lang.Double can not be instantiated using a constructor with a single String argument