我有一个REST服务:

@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发送数字,则它们工作得很好,但是如果发送空参数(空),则会出错:

sitesurl/shop/33/null 404 Not Found




Class java.lang.Double can not be instantiated using a constructor with a single String argument


在控制台上。

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

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

最佳答案

chrylis如果您不提供任何路径参数,则会抛出未找到的404资源,

我同意Chrylis的形式参数是一个好主意。
Gene,那么您应该确保在发送请求路径时参数不为空并且符合资源规范。对于Long或double字符串,则不应发送。
摆脱的另一种方法是将资源规范保留为String,并手动强制转换为Long等。
有一种方法可以很好地处理ParamExcption。创建一个实现ExceptionMapper的Mapper并抛出您的自定义响应

10-05 18:28