Как избежать конкатенации @RequestParam, когда в качестве параметра принимается оператор «+»? - PullRequest
0 голосов
/ 16 января 2020

Я новичок в Spring Framework и пытаюсь создать это простое приложение-калькулятор. У меня есть этот @RestController с этим методом:

@RequestMapping(value = "/calculate", method = RequestMethod.GET)
    public String calculate(@RequestParam(value = "a") String a, @RequestParam(value = "b") String b, @RequestParam(value = "operator") String operator) {
        //System.out.println(operator);
        if(operator.equals("+")){
            return String.valueOf((Integer.valueOf(a) + Integer.valueOf(b)));
        }
        if(operator.equals("-")){
            return String.valueOf((Integer.valueOf(a) - Integer.valueOf(b)));
        }
        if(operator.equals("*")){
            return String.valueOf((Integer.valueOf(a) * Integer.valueOf(b)));
        }
        if(operator.equals("/")){
            return String.valueOf((Integer.valueOf(a) / Integer.valueOf(b)));
        }

Хорошо, проблема в том, что когда я отправляю параметр "+" для суммирования двух переменных, программа объединяет обе целые вместо выполнения сумма. Остальные операции работают нормально, кроме суммы. Я попытался отправить "/ +" без удачи. Любая идея, как это можно решить, и самое главное, почему это происходит? Большое спасибо: D

1 Ответ

0 голосов
/ 16 января 2020

Вы должны знать, что + - специальный символ. Чтобы использовать + в качестве значения, вам необходимо закодировать его как %2B в вашем запросе GET.

Например:

http://localhost: 8080 / рассчитать? A = 3 & Ь = 5 & оператор =% 2B

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...