JSP无法访问对象属性

时间:2015-07-21 17:12:33

标签: java 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(属于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一致的作品 我注意到财产捐赠是公开的,而其他是私人的。也许问题在于它?

2 个答案:

答案 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表达式工作