java - 删除大于 1000 的 ID 时出现问题

标签 java web-services rest jersey

我偶然发现了一个相当奇怪的问题。搜索没有给出任何答案,所以我想在这里问一下......

我正在创建一个与网络服务(休息)通信的程序。在客户端,我有一个删除样本的方法:

public void remove(int id) throws UniformInterfaceException {
    webResource.path(java.text.MessageFormat.format("{0}", new Object[]{id})).delete();
}

在服务器端:

@DELETE
@Path("{id}")
public void remove(@PathParam("id") Integer id) {
    System.out.println("delete sample id = " + id);
    super.remove(super.find(id));
}

现在,这似乎适用于所有 ID < 1000(id 显示在输出中)。一旦超过 1000,似乎有一千个分隔符出于某种原因在工作?这会导致客户端出现以下错误:

com.sun.jersey.api.client.UniformInterfaceException: DELETE http://localhost:8080/myname/webresources/entities.samples/1,261 returned a response status of 404 Not Found

为什么它在 URI 中使用 1,261 而不是 1261?还是我在某个地方犯了一些愚蠢的错误?

提前致谢。

最佳答案

这里的问题是 MessageFormat类使用区域设置来格式化数字。从 javadoc(在顶部表的子格式创建列下),“NumberFormat.getIntegerInstance(getLocale())”。这包括某些区域设置的千位分隔符。考虑以下因素:

java> MessageFormat.format("{0}", new Object[]{Integer.valueOf(999)})
String res0 = "999"

java> MessageFormat.format("{0}", new Object[]{Integer.valueOf(1000)})
String res1 = "1,000"

您可以选择将本例中使用 MessageFormat 更改为 Integer.toString:

java> Integer id = 999
Integer id = 999

java> id.toString()
String res3 = "999"

java> id = 1000
Integer id = 1000

java> id.toString()
String res4 = "1000"

关于java - 删除大于 1000 的 ID 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16488476/

相关文章:

java - 为什么 0010 在 java 数组中给出不同的结果

java - 这个小Java程序中的错误

java - Guicejector.getInstance 抛出配置异常

javascript - 使用 Javascript 从 SOAP 中提取数据

web-services - 在运行时为 SMS Web 服务交付设置主机和端口时 TIdHTTP 出错

javascript - 在离线优先应用程序的情况下,如何与远程数据库同步数据?

rest - REST API 是否适合交互式软件或游戏?

java - 将 BroadcastReceiver 更改为现有用户

Javascript:带有 &lt;script&gt; 标签的客户端网络服务

javascript - ExtJS RESTful服务无法处理json数据