【问题标题】:Bean property 'firstName' is not readable or has an invalid getter methodBean 属性“firstName”不可读或具有无效的 getter 方法
【发布时间】:2013-04-09 11:28:35
【问题描述】:

我在ContactController 类文件中有以下方法

public ModelAndView listContacts() { 
    return new ModelAndView("contact", "contact", contactService.listContact()); 
}

我正在 JSP 中迭代这个列表:

<c:if test="${!empty contact}">
<table class="data">
    <tr>
        <th>Name</th>
        <th>Email</th>
        <th>Telephone</th>
        <th>&nbsp;</th>
    </tr>
    <c:forEach items="${contact}" var="contact">
        <tr>
            <td>${contact.lastName}, ${contact.firstName}</td>
            <td>${contact.email}</td>
            <td>${contact.telephone}</td>
            <td><a href="delete/${contact.id}">delete</a></td>
        </tr>
    </c:forEach>
</table>

但我收到以下错误:

org.springframework.beans.NotReadablePropertyException:bean 类 [java.util.ArrayList] 的无效属性“firstName”:Bean 属性“firstName”不可读或具有无效的 getter 方法:getter 的返回类型是否匹配setter 的参数类型?

【问题讨论】:

    标签: spring


    【解决方案1】:

    您似乎喜欢让自己的生活变得困难 :-) 为什么您为不同的事物使用相同的名称。你有一个联系人列表,这个列表应该命名为contacts(复数形式:它是多个联系人的列表),而不是contact。然后在循环中,每个单独的联系人都可以命名为contact(单数形式:它是一个单独的联系人实例):

    return new ModelAndView("contact", "contacts", contactService.listContact());
    
    <c:forEach items="${contacts}" var="contact">
        <tr>
            <td>${contact.lastName}, ${contact.firstName}</td>
            <td>${contact.email}</td>
            <td>${contact.telephone}</td>
            <td><a href="delete/${contact.id}">delete</a></td>
        </tr>
    </c:forEach>
    

    【讨论】:

    • 我按照你所说的进行了代码更改,但是我收到了这个错误 BindingResult 和 bean name 'contact' 的普通目标对象都不能用作请求属性
    • 这意味着您仍在尝试在 forEach 循环之外(在 ${!empty contact} 中,表单示例)或在 forEach 循环的 items 属性内使用 ${contact}。
    • 姓名 电子邮件 电话  
      ${contact.lastName }, ${contact.firstName} ${contact.email} ${contact.telephone} delete
      我已经改成 $(!empty contacts)
    • 编辑您的问题,并显示异常的完整堆栈跟踪。
    猜你喜欢
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 2019-12-13
    相关资源
    最近更新 更多