遇到一个异常:
javax.servlet.jsp.el.ELException: Unable to find a value for “isActive” in object of class “com.mycompany.domain.User” using operator “.”
使用“.”运算符,在User类的对象中,找不到isActive的值。
错误之处是,在JSP页面中我使用了:
$
{user.isActive}
检查后发现没有写属性isActive的getter方法,那好,利用IntelliJ IDEA的自动生成代码功能,补上:
public boolean isActive() {
return isActive;
}
运行,还是不对,问Erik,他说JavaBean命名规范里面规定,对于primitive和自定义类类型的属性property(小写),getter和setter方法就是getProperty和setProperty(第一个字母变大写,前面再加get或set)。而对于类型为 boolean的属性,getter方法还可以写为isProperty(getProperty仍然可用),而且,如果属性的前两个字母是is(两个小写),则getter与property完全同名(比如上面属性isActive的getter就是isActive())。
如果有个叫isIsActive的boolean类型属性,它的getter呢?答案还是isIsActive()。
所以,无论属性名是isActive还是active,getter只能是isActive()或者getActive(),JSP里只能用${user.active}来访问(注意大小写)。
最好的办法是不要以“is”作为开头来命名boolean类型的属性,以免混淆。
分享到:
相关推荐
2. 如果已经创建了以"is"开头的boolean属性,可以通过手动修改getter方法为"getSuccess()"来正常获取属性值,但这样做并不符合标准的Java Bean规范。 3. 如果同时存在"getSuccess()"和"isSuccess()",编译器会优先...
2. **boolean属性**:对于boolean类型的属性,getter方法通常命名为`isXXX`,setter方法为`setXXX`。 3. **属性访问权限**:属性通常是私有的(private),以保护数据安全。 4. **方法访问权限**:所有提供给外界...
对于boolean类型的属性,如`married`,则使用`isMarried()`和`setMarried(boolean)`方法。属性的访问权限分为只读、只写和读写三种情况。只有getter方法的属性被认为是只读,只有setter方法的属性是只写,而同时拥有...
JavaBean是一种遵循特定编码规范的Java类,它具有无参构造方法,并且包含多个符合特定命名规则的公共getter和setter方法,用于访问类的属性。JavaBean的设计模式非常适合用来表示简单的数据容器,在Web开发中经常被...
但是,通常不推荐以`is`开头命名Boolean类型的属性,因为这可能会导致getter方法与Java Bean规范冲突。Java Bean规范建议布尔属性的getter方法应以`is`开头,如`is_admin`的getter方法是`isAdmin()`,但这样与JSON...
对于布尔类型的属性,getter方法通常命名为`isSomething()`,setter方法为`setSomething(boolean something)`。 接下来,我们可以通过以下步骤创建一个简单的JavaBean: 1. **定义属性**:声明私有变量,例如`...
例如,私有变量配合公共getter和setter方法。 - 继承:子类继承父类的属性和方法。如`class Child extends Parent`。 - 抽象:抽象类或接口定义通用行为。如`abstract class Animal`。 - 多态:同一种行为可以有...
- 特殊情况下,boolean属性可以用isXxx()替代getXxx()。 6. **JavaBean的属性类型**: - Simple属性:单一属性,通过getter和setter进行访问。 - Index属性:数组类型的属性,提供设置和获取整个数组以及单个...
- Java中integer和boolean类型不兼容,即不能互相转换。例如,不能将一个整数值直接赋给一个布尔变量。 #### 第二章 拜访对象村(类与对象) - **面向对象编程(OOP)**: - 本章通过一个故事对比了面向过程编程和...
通过支持面向对象编程、原生类型、包和命名空间、属性和方法等关键概念,ActionScript 3.0 成为了创建复杂交互式应用程序的理想选择。对于那些希望利用 Flash CS3 创建高质量多媒体内容的开发者来说,掌握 ...
- 继承和覆盖是OOP的重要特性,允许子类继承父类的属性和方法,子类可以通过覆盖来实现个性化的功能。 - Java中的对象具有独立性,它们之间通过方法调用来交互,实现对象自治。 3. **变量的类型**: - Java有两...
4. **Employee类**:员工类`Employee`有六个属性:id(String类型,员工ID)、name(String类型,姓名)、age(int类型,年龄)、sex(boolean类型,性别)、phone(String类型,联系电话)和salary(float类型,...
16. 存取器:对于对象属性的获取与设置,JavaScript提供了getter和setter方法,应按需实现。 17. 构造器:使用new关键字可以调用构造器函数,创建并初始化对象实例。 18. 事件:在Web开发中,事件处理是不可或缺的...
Java基础学习笔记中详细介绍了Java编程语言的一些基础知识,主要包括数组的声明与操作、方法的定义与使用、循环结构、静态成员的概念、Java的基本数据类型、类的定义与成员变量的封装、构造方法以及Java的包结构等...
封装确保了数据的安全,通常通过getter和setter方法来读取和修改私有变量,遵循“最小权限原则”,减少模块间的耦合度,提高代码的可维护性和可扩展性。 继承是Java中实现代码复用的关键机制。一个类可以继承父类的...
对于存取方法(getter和setter方法),通常采用`get`或`set`加上字段名的方式命名。例如,如果有一个字段名为`name`,那么相应的getter和setter方法分别为`getName()`和`setName(String name)`。 ##### 1.3.2 一般...
JavaScript中存在两种类型的数据:基本类型(如string、number、boolean、null、undefined和symbol)和复杂类型(如object、array和function)。基本类型是通过值直接存储和访问的,而复杂类型则是通过引用来存储和...
Getter方法用于读取对象的属性,而Setter方法用于修改这些属性的值。 - **Getter方法**: - `public String getNo()`: 返回教师编号。 - `public String getName()`: 返回教师姓名。 - `public int getAge()`: ...
方法包括构造方法(用于初始化新对象)、普通方法(执行特定任务)以及特殊方法,如getter和setter用于访问和修改属性。 ```java public class Person { // 构造方法 public Person(String name, int age) { ...