0

我想传递双路径参数,如 5、5.0、0.5、3.5、3.65 等。

所以我在 JAX-RS 资源上做了这样的方法:

 @GET
 @Path("/rated-above/{minAvgRating : \\d+(\\.\\d+)? }")
 @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
 public Response getProvidersOnAverageRatedAbove( @PathParam("minAvgRating") Double minAvgRating,
                                                         @BeanParam PaginationBeanParam params) throws ForbiddenException {
             // method 
 }

但即使没有 Regex 模式,这种方法似乎也无法正常工作。

Caused by: org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure: Could not find MessageBodyWriter for response object of type: pl.salonea.jaxrs.utils.ErrorResponseWrapper of media type: application/octet-stream
at org.jboss.resteasy.core.ServerResponseWriter.writeNomapResponse(ServerResponseWriter.java:67)
at org.jboss.resteasy.core.SynchronousDispatcher.writeException(SynchronousDispatcher.java:153)

更新

抱歉,没有正则表达式它可以正常工作,正则表达式 \d+(\.\d+) 有问题吗?我也一直在尝试使用: [0-9]+(\.[0-9]+)? 只是\S+(不是空格)

4

1 回答 1

0

尝试使用 aBigDecimal而不是 a Double,例如

@GET
@Path("/rated-above/{minAvgRating}")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response getProvidersOnAverageRatedAbove(@PathParam("minAvgRating") BigDecimal minAvgRating, @BeanParam PaginationBeanParam params) throws ForbiddenException {
  Double myDouble = Double.valueOf(minAvgRating.toString());
  // .. and then use myDouble
于 2015-09-16T10:59:54.230 回答