Spring Boot-Double PathVariable根据要求取整

时间:2019-04-03 21:54:39

标签: java spring-boot

我正在使用Spring boot开发我的第一个REST API。 我在API上创建了多个请求,目前正在测试它们。 我在以下请求之一中发现了一个错误: 设置@PathVariable后,将其四舍五入

这是代码:

@RequestMapping(path = "/find/near/{lati}/{longi}", method = GET, produces = APPLICATION_JSON_VALUE)
    public Animals getAnimalsNearPosition(@PathVariable double lati, @PathVariable double longi) throws CenterNotFoundException {
        // On récupère le centre associé à cette cage
        Center center = centers.findCenterNear(lati, longi);

        Animals animals = new Animals();

        // On recherche parmis toutes les cages celles ayant une position proche
        for (Cage c : center.getCages()) {
            if (Position.isNear(c.getPosition().getLatitude(), lati, c.getPosition().getLongitude(), longi)) {
                for (Animal a : c.getResidents()) {
                    animals.addAnimal(a);
                }
            }
        }

        // On retourne les animaux
        return animals;
    }

例如,如果我发送 GET /find/near/4.50/1.39变量lati等于4.50,但longi等于1.0而不是1.39。 我尝试使用Intellij进行调试,但我不知道为什么会发生...

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

Spring在点(。)之后截断值。因为第一个值已经为4.5,所以它似乎没有被截断,但是实际上第一个参数也被截断了。您也可以在这里找到解决问题的方法。

spring @pathvariable with dot is getting truncated

答案 1 :(得分:0)

我用正则表达式解决了

@RequestMapping(path = "/find/at/{lati}/{longi:.+}", method = GET, produces = APPLICATION_JSON_VALUE)