Как извлечь параметр запроса в коллекцию значений имени

У меня есть параметр запроса, как

usrInfo: имя_файла = Firstname & LNAME = & Lastname компания = & addressLine1 = wewqe & addressLine2 = wqewqe и город = Qweqwe & страна = Соединенные Штаты +

Я хочу извлечь значения для каждого имени.

Я написал ниже метод, но он терпит неудачу, когда нет никакого значения для его соответствующей пары имен.

private String getRequestParamavalue(SlingHttpServletRequest request, String requestParameter, String requestParamName) {

        String reqParamValue = null;

        if (StringUtils.isNotBlank(request.getParameter(requestParameter))) {

            String[] reqParams = request.getParameter(requestParameter).split("&");
            Map<String, String> requestParamMap = new HashMap<>();
            String value;
            for (String param : reqParams) {
                String name = param.split("=")[0];
                value = StringUtils.isEmpty(param.split("=")[1]) ? "" : param.split("=")[1];
                requestParamMap.put(name, value);
            }

            reqParamValue = requestParamMap.get(requestParamName);

        }

        return reqParamValue;

    }

Пожалуйста, дайте мне совет по этому вопросу. Благодарю.

2 ответа

Решение

@Kali Попробуйте это

        for (String param : reqParams) {
            String name = param.split("=")[0];
            value = param.split("=").length == 1 ? "" : param.split("=")[1];
            requestParamMap.put(name, value);
        }

Почему бы просто не сделать request.getParameter(requestParamName), родительский класс HTTPServlet сделает для вас разбор.

Другие вопросы по тегам