RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 806159
Accepted
Timur  Musharapov
Timur Musharapov
Asked:2020-03-29 02:53:46 +0000 UTC2020-03-29 02:53:46 +0000 UTC 2020-03-29 02:53:46 +0000 UTC

带下划线的 JSP 字段

  • 772

JSP在场上用下划线发誓,但我没有找到任何信息表明这是不可能的。

Tomcat堆栈:

SEVERE: Servlet.service() for servlet [jsp] threw exception
javax.el.PropertyNotFoundException: Property [the_year_of_publishing] not found on type [com.core.newbie.model.Book]
...
21:50:32.693 [http-nio-8080-exec-5] DEBUG 
org.springframework.web.servlet.DispatcherServlet - Could not complete request
org.apache.jasper.JasperException: An exception occurred processing [/WEB- 
INF/book/showBook.jsp] at line [84]

81:                 <td><a href="#">${book.name}</a></td>
82:                 <td>${book.author}</td>
83:                 <td></td>
84:                 <td>${book.the_year_of_publishing}</td>

Book.java,部分代码:

public String getPublishingHouse() {
    return publishing_house;
}

public void setPublishingHouse(final String publishing_house) {
    this.publishing_house = publishing_house == null ? null : publishing_house.trim();
}

public Integer getTheYearOfPublishing() {
    return the_year_of_publishing;
}

public void setTheYearOfPublishing(final Integer the_year_of_publishing) {
    this.the_year_of_publishing = the_year_of_publishing;
}

在这两个领域发誓在 JSP 中,删除了一个。有什么问题?

java
  • 3 3 个回答
  • 10 Views

3 个回答

  • Voted
  1. Виктор
    2020-03-29T06:58:59Z2020-03-29T06:58:59Z

    Jsp 通过 getter 访问字段,而不是直接访问。

    这就是异常告诉您的内容。未找到具有该名称的属性。将名称更改为theYearOfPublishing小写。

    模型可能根本没有字段,但可能有方法getSome(),那么在jsp中就可以引用字段some

    但是在 java 中,习惯上使用 CamelCase 作为名称。虽然你可能知道

    • 3
  2. Sergey Gornostaev
    2020-03-29T14:43:40Z2020-03-29T14:43:40Z

    只需替换${book.the_year_of_publishing}为${book.theYearOfPublishing}. 表达式语言解析器将替换为调用book.getTheYearOfPublishing().

    • 3
  3. Best Answer
    Sergey
    2020-03-29T15:00:34Z2020-03-29T15:00:34Z

    有必要区分字段和属性的概念。

    正如维基百科所暗示的

    属性是一种访问对象内部状态的方法,它模仿某种类型的变量。访问对象的属性看起来与访问结构字段(在结构化编程中)相同,但实际上是通过函数调用实现的。当您尝试设置此属性的值时,会调用一个方法,而当您尝试获取此属性的值时,会调用另一个方法。

    属性后面甚至不一定是类字段。
    这是一个非常常见的案例。

    Java 并没有提出用于定义属性的特殊语法。相反,他们提出了一个 JavaBean 约定,该约定规范用于设置、获取属性值的方法的名称,以及相应地如何命名属性。

    如果你有一个方法Integer getTheYearOfPublishing(),那么你就有一个属性theYearOfPublishing。

    即使这种方法是

    public Integer getTheYearOfPublishing() {
        return the_year_of_publishing;
    }
    

    或者像这样

    public Integer getTheYearOfPublishing() {
        return new Random.nextInt();
    }
    

    仍然会有财产theYearOfPublishing。

    在最后一个例子中,不是字段名与属性名不匹配,而是各种胡说八道。

    所有支持 JavaBean 的工具和框架都只使用这些属性。和 JSP 一样。

    不要看字段名,看方法名。

    • 3

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5