我有对象项目:
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(属于Project):
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中访问Project属性:
<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:Property&#39; donation&#39;找不到 输入data.Project
我该怎么办?与project.category.name
一致的作品
我注意到财产捐赠是公开的,而其他是私人的。也许问题在于它?
答案 0 :(得分:2)
添加一个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>
答案 1 :(得分:0)
${project.donation.daysLeft}
这是一个JSP表达式语言语法。 EL适用于getter setters。所以你必须有getter方法来访问bean属性。以下是Oracle docs
的引用一个属性必须至少有一个名为getProperty的访问器方法, 其中Property是可以引用的属性的名称 表达。
因此,project
应该getDonation()
和donation
bean应该有getDaysLeft()
getter方法才能使这个EL表达式工作