我已经搜索了很多但找不到我的错误。 我有一个servlet并尝试将一个ArrayList放在一个bean中:
ClientBean c = new ClientBean();
c.setList(ClientsHandler.getAllClients());
request.setAttribute("listClients", c);
RequestDispatcher dispatcher = request.getRequestDispatcher("showClients.jsp");
dispatcher.forward(request, response);
在“showClients.jsp”中,我尝试打印客户端1的电话:
<jsp:useBean id="listClients" class="beans.ClientBean" scope="request"/>
<% ArrayList<ClientsRowGateway> list = ((beans.ClientBean)request.getAttribute("listClients")).getList(); %>
<% out.println( ""+list.get(1).getPhone() ); %>
但我有一个NullPointerException,因为我的对象列表为null。 如何在bean内部的ArrayList内的对象(Client)内访问变量(getPhone())???
经过更多测试后,我尝试直接访问我的ArrayList而不使用bean并运行,打印客户端电话!
<%
ArrayList<ClientsRowGateway> testList = ClientsHandler.getAllClients();
if( testList != null )
out.println( testList.get(1).getPhone() );
%>
但是我需要使用一个bean,我只是为测试做这个,所以有人可以帮助我吗?
答案 0 :(得分:1)
你为什么不使用EL(表达语言)?要访问第二项,句子将是${listClients.list[1].phone}
。
如果你不能使用EL,当你使用useBean标签时,你已经声明了一个变量,所以你可以直接访问bean。
<jsp:useBean id="listClients" class="beans.ClientBean" scope="request"/>
<% ArrayList<ClientsRowGateway> list = listClients.getList(); %>
<% out.println( ""+list.get(1).getPhone() ); %>
我建议你检查一下getList方法是否正确返回了列表。
我希望这会对你有所帮助
答案 1 :(得分:0)
检查您是否正在加载正确的.jars。通常对于这种东西,你需要一些特定的jar来在服务器上运行JSP的/ servlet。