2016-12-05 68 views
-1

我對JSP非常陌生。無論如何,我試圖用c:foreach打印列表中的每個對象,但它不起作用,我不知道爲什麼。我已經檢查過類似的問題,但沒有解決我的問題。c:foreach不打印對象

 <h2>  

     Your account information: 
     <% 
      LinkedList<BankAccount> accounts = null; 
      accounts = account1.getAccountList(); 
      request.setAttribute("accounts", account1.getAccountList()); 

     %> 


    </h2> 


<c:foreach items="${accounts}" var="acct"> 
<p>${acct.accountName}</p><br/> 
<p>$${acct.AccountBalance}</p><br/> 
    </c:foreach> 

<TD valign="top"><B><%=accounts.get(0).accountName%></b><br> 
<TD valign="top"><b>$<%=accounts.get(0).AccountBalance%></b></br> 
    </br></br> 
<TD valign="top"><b><%=accounts.get(1).accountName%></b><br> 
<TD valign="top"><b>$<%=accounts.get(1).AccountBalance%></b></br> 

底部代碼工作--- accounts.get(0)等,但我不能,因爲如果我將數據添加到數據庫,然後我不得不每次添加更多的代碼使用。

感謝您的幫助。

+0

要導入的庫使用類似於這條線的東西? <%@ taglib prefix =「c」uri =「http://java.sun.com/jsp/jstl/core」%> – LeHill

+0

尷尬的是,沒有。我添加了你的線,但它說它找不到。我也找不到任何下載。 – user3007447

回答

0

你沒有提供有關BankAccount類的信息,因此我會做一個假設:

package testingThings.EL.linkedlist; 

public class BankAccount { 
    protected String accountName; 
    protected double accountBalance; 

    public BankAccount(String accountName, double accountBalance) { 
     this.accountName = accountName; 
     this.accountBalance = accountBalance; 
    } 

    public String getAccountName() { 
     return accountName; 
    } 

    public void setAccountName(String accountName) { 
     this.accountName = accountName; 
    } 

    public double getAccountBalance() { 
     return accountBalance; 
    } 

    public void setAccountBalance(double accountBalance) { 
     this.accountBalance = accountBalance; 
    } 

} 

我改變一個 ccountBalance 一個 ccountBalance堅持的約定。

在你的JSP中,你需要LeHill提到的那一行。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 

不要忘了協議:HTTP://

的JSP:

<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<%@ page import="testingThings.EL.linkedlist.BankAccount"%> 
<%@ page import="java.util.LinkedList"%> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Insert title here</title> 
</head> 
<body> 
    <% 
     LinkedList<BankAccount> accounts = new LinkedList<BankAccount>(); 
     accounts.add(new BankAccount("acc1", 1000.00)); 
     accounts.add(new BankAccount("acc2", 2000.00)); 

     pageContext.setAttribute("accounts", accounts); 
    %> 
    <c:forEach items="${accounts}" var="acct"> 
     <p>${acct.accountName}</p> 
     <br /> 
     <p>${acct.accountBalance}</p> 
     <br /> 
    </c:forEach> 
</body> 
</html> 

在瀏覽器中輸出:

acc1 

1000.0 

acc2 

2000.0 
0

它看起來像你沒有getter和setters。 您的scriptlet的屬性名稱爲「accountName」。 JSTL期望「get」或「is」作爲bean方法名稱的起點。 您無法直接調用該屬性。你必須使用getter方法。 如果您創建了一個名爲「getAccountName」的方法,它應該可以工作。

+0

我確實有getter和setter方法。我試圖將其更改爲「acct.getAccountName」,但這也不起作用。 – user3007447

+0

因此,對象BankAccount具有名爲getAccountName和getAccountBalance的方法? – LeHill