从Servlet加载Bean到JSP

时间:2013-12-14 02:50:20

标签: java jsp servlets arraylist javabeans

我已经搜索了很多但找不到我的错误。 我有一个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,我只是为测试做这个,所以有人可以帮助我吗?

2 个答案:

答案 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。