2016-11-12 2 views
1

У меня есть список объектов. Объект имеет следующий класс:Доступ к вложенным объектам в JSP View

@Entity 
@Table(name="User") 
public class User { 
    @Id 
    @Column(name = "userid" ,unique=true, nullable=false) 
    private String id; 
    @Column(name="firstname") 
    private String firstname; 
    @Column(name="lastname") 
    private String lastname; 
    @Column(name="title") 
    private String title; 
    @Embedded 
    private Address address; 
    @ManyToMany 
    @JoinTable(name="phone_user", joinColumns={@JoinColumn(name="userid")}, 
    inverseJoinColumns={@JoinColumn(name="phoneid")}) 
    private List<Phone> phones; 

    public String getId() { 
     return id; 
    } 
    public void setId(String id) { 
     this.id = id; 
    } 

    public String getFirstname() { 
     return firstname; 
    } 
    public void setFirstname(String firstname) { 
     this.firstname = firstname; 
    } 

    public String getLastname() { 
     return lastname; 
    } 
    public void setLastname(String lastname) { 
     this.lastname = lastname; 
    } 
    public String getTitle() { 
     return title; 
    } 
    public void setTitle(String title) { 
     this.title = title; 
    } 

    public Address getAddress() { 
     return address; 
    } 
    public void setAddress(Address address) { 
     this.address = address; 
    } 

    public List<Phone> getPhones() { 
     return phones; 
    } 
    public void setPhones(List<Phone> phones) { 
     this.phones = phones; 
    } 





} 

В моем методе контроллера добавить этот список модели как:

model.addAttribute("lists",phone.getUsers()); 

В моем JSP я не могу получить доступ списки добытчика методов. Мне нужно получить доступ к getId и getFirstName getters. Это моя JSP:

<c:forEach items="${lists}" var="listvalue"> 
    <tr> 
     <td>Employee ID: <c:out value="${listvalue}"/></td> 
     <td>Employee Pass: <c:out value="${listvalue.getId()}"/></td> 
    </tr> 
</c:forEach> 

Я получаю следующее сообщение об ошибке:

org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/views/phoneview.jsp at line 33 

линия 33 является:

<td>Employee Pass: <c:out value="${listvalue.getId()}"/></td> 

Я не могу показаться, чтобы выяснить, в чем проблема.

ответ

1

Вместо метода getId() следует использовать свойство JavaBean стиля вызова:

<c:out value="${listvalue.id}"/> 

Он должен работать, потому что EL (Expression Language) использует спецификации JavaBeans. С точки зрения этой спецификации listvalue является Java-компонентом, а id является свойством, которое считывается методом getter getId().

Смотрите также:EL Wiki

+1

Вы не возражаете объяснить свой ответ? –

+0

Язык выражения JSP использует спецификацию JavaBeans. В терминах этой спецификации 'listvalue' является Java-компонентом, а' id' является свойством, которое считывается методом getter getId(). – Oleksandr

+0

Я думаю, что это должно решить проблему. –

Смежные вопросы