2015-07-21 122 views
1

我有對象項目:JSP不能訪問對象屬性

public class Project { 
    public static int projectid = 0; 

    private int id; 

    private String name; 
    private String description; 

    private Category category; 

    public DonationLogic donation; 

    private String link; 
    private String questionsAndAnswers; 

    //methods 
} 

而且DonationLogic(是項目的屬性):

public class DonationLogic { 
    private int totalAmount; 
    private int daysLeft; 
    private double collectAmount; 
    private int id; 
    private String donatorname; 
    private int daonatorcardid; 
    private static int donationid = 0; 

    //methods 
} 

我嘗試在JSP訪問項目屬性:

<c:forEach var="project" items="${projects}"> 
      <c:out value="${project.name}"/></a></br> 
      Name: <c:out value="${project.name}"/></br> 
      Description: <c:out value="${project.description}"/></br> 
      TotalAmount/CollectAmount: <c:out value="${project.donation.totalAmount}/${project.donation.collectAmount}"/></br> 
      DaysLeft: <c:out value="${project.donation.daysLeft}"/></br> 
      Category: <c:out value="${project.category.name}"/></br> 
     </c:forEach> 

所有代碼的作品,但與project.donation.XXX行。 錯誤是:

javax.el.PropertyNotFoundException:房產 '捐贈' 上 型data.Project

沒有找到我該怎麼辦?與project.category.name線我注意到財產捐贈是公開的,而其他是私人的。也許問題在於它?

+0

不「捐款」有得到和setter? –

+0

在項目對象內 - 沒有。 – ovod

+0

不,在「DonationLogic」類中。 –

回答

1

添加一個getter方法:

public DonationLogic getDonation { 
    return this.donation; 
} 

您還可以添加這樣的事情在JSP看你的對象是什麼樣子:

PROJECTS=${projects}<br/> 
<c:forEach var="project" items="${projects}"> 
      PROJECT=${project}<br/> 
      <c:out value="${project.name}"/></a></br> 
      Name: <c:out value="${project.name}"/></br> 
      Description: <c:out value="${project.description}"/></br> 
      TotalAmount/CollectAmount: <c:out value="${project.donation.totalAmount}/${project.donation.collectAmount}"/></br> 
      DaysLeft: <c:out value="${project.donation.daysLeft}"/></br> 
      Category: <c:out value="${project.category.name}"/></br> 
</c:forEach> 
+0

那麼這意味着JSP無法在沒有getter的情況下訪問屬性? – ovod

+0

我相信這是正確的。 – John

+0

在這種情況下,JSP如何訪問私有屬性?沒門? – ovod

0
${project.donation.daysLeft} 

這是一個JSP表達式語言句法。 EL致力於獲得者制定者。所以你必須有getter方法來訪問bean屬性。下面是Oracle docs

屬性的報價必須至少有一個名爲的getProperty, 的存取方法,其中房產是可以通過 表達式中引用的屬性的名稱。

所以,project應該有getDonation()donation豆應該有這個EL表達式getDaysLeft() getter方法工作