Доступ к массивам внутри объектов Java - PullRequest
0 голосов
/ 05 марта 2012

Как получить значения массива, который находится внутри объекта java на странице jsp?

Я установил атрибут объекта, чтобы на странице jsp я мог вызывать объект следующим образом

${obj.property}

Мой вопрос заключается в том, как мне получить свойство String [] example из Object obj?

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

Я получаю ошибки, из-за которых у класса obj.Obj нет свойства property 'пример 'и, ​​очевидно, я не получаю данные.

Фактические ошибки:

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)
    {

    }

}

Я создаю объект в своем сервлете, а также Атрибут

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);

Я спрашивал об этом ранее, но не получил четкого ответа.Я думаю, что моя проблема заключается в извлечении данных из одного jsp в моем forEach, который я упомянул в верхней части

1 Ответ

0 голосов
/ 05 марта 2012

javax.el.PropertyNotFoundException: класс 'roommate.Roommate' не имеет свойства 'favProfessors'

Java верна.У вас нет метода getFavProfessors() в этом классе.Вместо этого это выглядит следующим образом:

public String[] getProfessors() 
{ 
    return favProfessors; 

}

У вас есть 2 варианта: вместо этого используйте ${roommate.professors} или зафиксируйте имя метода получателя как getFavProfessors().

В противоположность тому, что думает большинство начинающих, EL не имеет прямого доступа к частным свойствам.EL просто вызывает общедоступные методы получения / установки согласно спецификации Javabeans .Настоящая частная собственность за этим может иметь совершенно другое имя или даже не существовать вообще.

...