【问题标题】:Cast ArrayList to regular String array [duplicate]将 ArrayList 转换为常规字符串数组 [重复]
【发布时间】:2016-10-30 19:53:35
【问题描述】:

我的项目有问题。 我有一个 JSP 页面和一个 Java servlet。 servlet 必须使用 session.setAttribute() 在会话中保存一个包含名称的列表。在 JSP 页面上,必须使用 session.getAttribute() 从会话中读取,并使用 for 循环从列表中打印出所有名称。所以目前的问题是我不知道如何将 Obect/ArrayList 转换为常规的 String 数组。 我知道有更好的方法可以做到这一点,但我必须这样做。

这是我的代码

Servlet:

private ArrayList<String> userlist = new ArrayList<String>(Arrays.asList("bla1","bla2","bla3","bla4")); // unsynchronisiert

public void addName(String name){
    userlist.add(name);
}   

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    addName(request.getParameter("username"));
    System.out.println(userlist);
    HttpSession session = request.getSession();
    session.setAttribute("userlist", userlist);
}

JSP:

String[] names = (String[]) session.getAttribute("userlist");
System.out.println(names);

【问题讨论】:

  • 您不能将 ArrayList 强制转换为 String[]。为什么不将其转换为 ArrayList?如果你需要一个 String[] 你可以通过 list.toArray(new String[list.size()]) 解析它。
  • 好的,我可以解决这个问题,但它仍然告诉我“null”。我不明白为什么?

标签: java arrays arraylist classcastexception


【解决方案1】:

您正在将 ArrayList 转换为 Array。您无法将 ArrayList 转换为 Array。

你需要替换:
String[] names = (String[]) session.getAttribute("userlist");

ArrayList list= (ArrayList)session.getAttribute("userlist");

现在迭代列表并从中获取数据。

【讨论】:

  • 好的,我可以解决这个问题,但它仍然告诉我“null”。我不明白为什么?
  • 请提供错误日志文件。如果它返回 null ,则表示该密钥(用户列表)的会话中没有存储任何内容。或者您正在尝试在会话中存储之前获取数据。
猜你喜欢
  • 1970-01-01
  • 2017-04-10
  • 2012-05-18
  • 2012-10-04
  • 2012-12-26
  • 2012-01-15
  • 1970-01-01
  • 2016-12-10
  • 1970-01-01
相关资源
最近更新 更多