访问Java对象中的数组

时间:2012-03-05 01:51:12

标签: arrays jsp foreach javabeans

如何在jsp页面中获取位于java对象内的数组的值?

我已经设置了一个对象属性,以便在jsp页面中我可以像这样调用对象

${obj.property}

我的问题是如何从Object obj获取属性String []示例?

<c:forEach var="prop" items="${obj.example}">
                <td>${prop}</td>
</c:forEach>

我得到的错误告诉我类obj.Obj没有属性属性'example' 显然我没有得到数据。

实际错误:

org.apache.jasper.JasperException:javax.el.PropertyNotFoundException:类'roommate.Roommate'没有属性'favProfessors'。

javax.el.PropertyNotFoundException:类'roommate.Roommate'没有属性'favProfessors'

我的实际班级:

    package roommate;

public class Roommate{
    public String firstname;
    public String lastname; 
    public String gender;
    public String place;
    public String[] favProfessors;





public Roommate(String fname, String lname, String roommateGender, String hangout,String[] professors) {
        firstname= fname;
        lastname= lname;
        gender= roommateGender;
        place= hangout;
        favProfessors= professors;

    }



    public String getFirstname() 
    { 
        return firstname; 

    }

    public void setFirstname(String newFirstname) 
    {
        this.firstname = newFirstname; 
    }
    public String getLastname() 
    { 
        return lastname; 

    }
    public void setLastname(String newLastname) 
    {
        this.lastname = newLastname; 
    }
     public String getGender() 
    { 
        return gender; 

    }
    public void setGender(String newGender) 
    {
        this.gender = newGender; 
    }
    public String getHangout() 
    { 
        return place; 

    }
    public void setHangout(String newPlace) 
    {
        this.place = newPlace; 
    }
    public String[] getProfessors() 
    { 
        return favProfessors; 

    }
    public void setProfessors(final String[] newfavProfessors) 
    {
        this.favProfessors = newfavProfessors; 
    }

    public void addRoommate(String fname, String lname, String roommateGender, String hangout,String[] professors)
    {

    }

}

我在我的servlet中创建对象以及Atrribute

String [] profArray = request.getParameterValues("professor");

        Roommate roommate= new Roommate(
                session.getAttribute("fname").toString(),
                session.getAttribute("lname").toString(), 
                session.getAttribute("gender").toString(),
                session.getAttribute("hangout").toString(),
                profArray);


         session.setAttribute("roommate",roommate);

我早些时候问了这个,但没有得到明确的答案。我认为我的问题是在我在顶部提到的forEach中仅在jsp中提取数据

1 个答案:

答案 0 :(得分:0)

  

javax.el.PropertyNotFoundException:类'roommate.Roommate'没有属性'favProfessors'

Java是对的。您在该课程中没有getFavProfessors()方法。它取而代之的是:

public String[] getProfessors() 
{ 
    return favProfessors; 

}

您有2个选项:改为使用${roommate.professors},或将getter方法名称修改为getFavProfessors()

与大多数初学者认为的相反,EL不会直接访问私有属性。 EL只根据Javabeans specification调用公共getter / setter方法。它背后的真正私有财产可以有一个完全不同的名称,甚至根本不存在。