java - JSP - 会话属性中的 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);
由于我不知道在这里尝试什么,我没有尝试过任何东西。
解决方案
首先,我建议你,如果可能的话,你可以开始使用表达式语言,而不是直接使用jsp,因为让你的代码更具可读性。看看你的问题,你想在请求我们的会话范围内使用列表吗?我问是因为有时您会从请求范围中获取列表,但您的IF正在验证会话。
而且您绝不会将您的列表添加到会话中。按照你的逻辑,你可以这样做:
request.getSession().setAttribute("attackList", attacks);
以下是有关会话方法的更多信息:
https://beginnersbook.com/2013/11/jsp-implicit-object-session-with-examples/
推荐阅读
- outlook - 如何通过 IMAP 或 POP3 连接到本地 Outlook
- javascript - 缺少图像取决于 html2canvas (html2pdf) 中的比例
- android - Autocompletetextview 进入弹出窗口使我的 APP 崩溃
- javascript - 节点服务器在 Windows 10 中启动服务器花费了太多时间
- r - R 闪亮的反应单选按钮
- powerapps - 缺少使用 Sql 的默认电源应用程序的添加、编辑和删除功能
- javascript - 如何从 JSON fromat 中提取特定字段和值
- ubuntu - shell脚本中的monit命令
- performance - 针对特定设备的唯一 ID 的移动性能测试,这里我没有用户凭据,如何进行用户负载测试?
- gitahead - GitAhead 禁用 HTTPS 登录窗口