【问题标题】:JSP - ArrayList in session attribute nullJSP - 会话属性中的 ArrayList 为空
【发布时间】:2020-02-20 19:04:06
【问题描述】:

我正在尝试在每个用户会话中将一些数据存储在 arraylist 中,但是当我尝试获取列表时,它显然是空的...

代码:

<%
    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);

由于我不知道在这里尝试什么,我没有尝试过任何东西。

【问题讨论】:

  • 在一种情况下您正在查看会话request.getSession().getAttribute("attackList"),在另一种情况下您正在查看查询参数request.getAttribute("attackList")

标签: java jsp jakarta-ee


【解决方案1】:

首先,我建议你,如果可能的话,你可以开始使用表达式语言,而不是直接使用jsp,因为让你的代码更具可读性。 看看你的问题,你想在请求我们的会话范围内使用列表吗? 我问是因为有时您会从请求范围中获取列表,但您的 IF 正在验证会话。

而且您绝不会将您的列表添加到会话中。 按照你的逻辑,你可以这样做:

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

这里是关于会话方法的更多信息:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-07
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    相关资源
    最近更新 更多