JSP - ArrayList в атрибуте сеанса null - PullRequest
0 голосов
/ 24 октября 2019

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

Код:

<%
    List<String> attacks = new ArrayList<>();
    if (request.getSession().getAttribute("attackList") != null){
        attacks = (List<String>) request.getAttribute("attackList");
        int x = 1;
        for (String attack : attacks){
            String[] attacc = attack.split(":");
            out.print("" +
                    "<tr>\n" +
                    "                                    <th scope=\"row\">"+x+"</th>\n" +
                    "                                    <td>"+attacc[0]+"</td>\n" +
                    "                                    <td>"+attacc[1]+"</td>\n" +
                    "                                    <td>"+attacc[2]+"</td>\n" +
                    "                                    <td>"+attacc[3]+"</td>\n" +
                    "                                </tr>");
            x++;
        }
    }else{
        out.print("empty");
    }
%>

То^ - это код, который я использую для извлечения данных, он печатает «пустой», поэтому он по существу нулевой ... Как я добавляю данные:

if (request.getAttribute("attackList") != null) {
    attacks = (List<String>) request.getAttribute("attackList");
    request.removeAttribute("attackList");
}
attacks.add("data here");
request.setAttribute("attackList", attacks);

Я ничего не пробовал из-за себяне зная, что здесь попробовать.

1 Ответ

0 голосов
/ 24 октября 2019

Во-первых, я предлагаю вам, если это возможно, вы можете начать работать с языком выражений, а не напрямую с jsp, потому что ваш код станет более читабельным. Посмотрите свою проблему, хотите ли вы работать со списком в запросе нашей области сеанса? Я спрашиваю, потому что иногда вы получаете свой список из области запроса, но ваш IF проверяет сеанс.

И вы ни разу не добавляете свой список в сеанс. Вы можете сделать это, следуя своей логике, с помощью:

request.getSession().setAttribute("attackList", attacks);

Подробнее о методах сеанса:

https://beginnersbook.com/2013/11/jsp-implicit-object-session-with-examples/

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