如何在java jsp中获取数组列表大小?

时间:2014-11-16 22:36:04

标签: arrays jsp servlets

我有一个要求用户输入ID的表单。此表单将发送到servlet,该servlet检查数据库以查看用户是否存在。如果用户存在,那么它会将我的订购商品发回给我。已排序的项目将作为数组列表返回。然后将此数组列表重定向到jsp文件以在网页上显示它。用户可以有多个订单,因此数组列表大小可以变化。如何获取数组列表大小,以便显示数组列表中的每个项目?我不想使用JSTL。

的index.jsp:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
<script>
    /*function signin(id, id2) {
     document.getElementById(id).style.display = 'block';
     document.getElementById(id2).style.display = 'none';
     //document.getElementById(id3).style.display = 'none';
     }*/
</script> 

<form id="Signin" method="post" action="FindUser">
    <h2>Login </h2>
    <input type="text" name="txtCustID" 
           placeholder="UserID"><br>
    <br><input type="submit" value="Find">
</form>
<%--!<form id="Signup" method="post" action="FindUser" 
      style="display:none;">
    <h2>Sign Up </h2>
    <input type="text" name="UserId" 
           placeholder="User ID"><br>
    <br><input type="text" name="FirstaName" 
               placeholder="First Name"><br>
    <br><input type="text" name="LastName" 
               placeholder="Last Name"><br>
    <br><input type="text" name="Street" 
               placeholder="Street"><br>
    <br><input type="text" name="City" 
               placeholder="City"><br>
    <br><input type="submit" value="Sign Up">
</form> --%>
</body>

FindUser.java:

public class FindUser extends HttpServlet {

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse
    response) throws ServletException, IOException {


String sID = request.getParameter("txtCustID");

String url = ("admin/UserFound.jsp");
try {
    Users one = UserDAO.findUser(sID);
    request.setAttribute("theCustomer", one);
    if (one.getFirstName().equals("none")) {
        url = "admin/UserNotFound.jsp";
    }
    ArrayList user_order = UserDAO.findOrder(sID);
    request.setAttribute("theOrder", user_order);
    response.sendRedirect(url);
    //RequestDispatcher rd = request.getRequestDispatcher(url);
    //rd.forward(request, response);

} catch (ClassNotFoundException e) {
    System.err.print("Failed to load Driver");
    System.err.print(e);
} catch (SQLException e) {
    System.err.print("SQL Error" + e);
    System.err.print("SQL State: " + e.getSQLState());
    System.err.print("Error Code: " + e.getErrorCode());
} catch (Exception e) {
    System.err.println(e);
}
}

UserFound.jsp:

<%-- 
Document   : CustomerFound
Created on : Nov 15, 2014, 9:40:47 PM
Author     : mississauga
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>


<p>First word is: ${theOrder[x].getBoxes()}</P>

<%--<form id="Signin" method="post" action="FindUser" 
       style="display:none;">
     <h2>Login </h2>
     <input type="text" name="txtCustID" 
            placeholder="UserID"><br>
     <br><input type="submit" value="Find">
 </form> --%>
</body>
</html>

}

4 个答案:

答案 0 :(得分:58)

使用fn:length功能。

在JSP文件的开头

声明fn命名空间
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

稍后在代码中

${fn:length(collection)}

答案 1 :(得分:2)

较新版本的EL接受使用EL表达式中对象类中定义的方法,因此您可以简单地调用size()方法:

<span>Size: ${list.size()}</span>

答案 2 :(得分:-1)

您应该将UserFound.jsp的范围设置为request

ArrayList orderList = (ArrayList )  request.getAttribute("theOrder");

<ul>
<% If(orderList  != null) {%>

   <% for(String orderName : orderList ) { %>
      <li> <%= orderName %> </li>
   <% } %>

<% }else{ %>
  No Order Found
<% } %>


</ul>

OR

ArrayList orderList = (ArrayList )  request.getAttribute("theOrder");
<ul>
<% If(orderList  != null) {%>

<% for(int orderNum =0;i< orderList.size();++orderNum  ) { %>
   <li> <%= orderList.get(orderNum )%> </li>
<% } %>
<% }else{ %>
  No Order Found
<% } %>
</ul>

答案 3 :(得分:-1)

ArrayList orderList = (ArrayList )  request.getAttribute("theOrder");

//Unchecked cast from Object to ArrayList