我有一个要求用户输入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>
}
答案 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