el表达式-EL表达式类对象访问私有属性

问题描述

EL表达式类对象访问私有属性

在EL表达式中,为什么用对象就能得到类中属性的值,属性是私有的

解决方案

EL表达式获取对象属性的原理是这样的:
以表达式${user.name}为例
EL表达式会根据name去User类里寻找这个name的get方法,此时会自动把name首字母大写并加上get前缀,一旦找到与之匹配的方法,El表达式就会认为这就是要访问的属性,并返回属性的值。
所以,想要通过EL表达式获取对象属性的值,那么这个属性就必须有与之对应的get方法。

解决方案二:

其实你要了解EL表达式的运行原理,它其实后台也对应的java代码,
它会先将你EL表达式中的对象属性的首字符大写,拼成getXX()方法,
然后利用反射将对象构建出来,然后再执行getXX()方法,
所以这中间不关私有属性的事,调用的是私有属性的get/set方法。
如果你不写get/set方法,那EL表达式就拿不到值了。set方法是给你后台设置值用的。

解决方案三:

EL只能通过getset方法获取的方式实在是太挫了,难道就不能直接通过反射获取某个属性的值吗

时间: 2025-01-14 17:40:42

el表达式-EL表达式类对象访问私有属性的相关文章

java private-java 一个类的对象访问私有属性的问题

问题描述 java 一个类的对象访问私有属性的问题 public class ModifierTest1 { public static void main( String[] args ) { A a = new A(); //System.out.println(a.s); a.f(); } } class A { private int i; private String s; public A() { i = 123; s = "hello"; } public void f(

Java反射机制(三):调用对象的私有属性和方法

一. 通过反射调用类中的方法 在正常情况下,得到类的对象后,我们就可以直接调用类中的方法了,如果要想调用的话,则肯定必须清楚地知道要调用的方法是什么,之后通过Class类中的getMethod方法,可得到Method对象. public Method getMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException 当获取到Method对象后,可以通过该对象来执行

python直接访问私有属性的简单方法_python

实例化对象名._类名__私有属性名 class Flylove: price = 123 def __init__(self): self.__direction = 'go beijing .' zIng = 'wait car,many person' if __name__ == '__main__': print Flylove.price fly = Flylove() print fly._Flylove__direction 以上这篇python直接访问私有属性的简单方法就是小编分

c++-文件的读写,会将类对象的数据成员写入文件中。能将文件中的信息读入类对象的对应属性中。

问题描述 文件的读写,会将类对象的数据成员写入文件中.能将文件中的信息读入类对象的对应属性中. 情况一:无get,set,无<< >>重载函数的情况下如何将类对象的各个数据成员写入某个文件中(提示:可以在print函数中写代码). 情况二:当程序包含get,set函数而无<< >>重载函数时,如何将类对象的数据成员写入文件中. 情况三:当程序包含<< >>重载函数时,如何将类对象的数据成员写入文件中. 解决方案 大神在哪里,求,求大神

属性访问-js对象访问内部属性的问题

问题描述 js对象访问内部属性的问题 例如我有一个对象A={}:A.options= { attr1:100, attr2:300, attr3:attr1*attr2 } 此时将报错.如果我attr3想在这对象里面访问attr1跟attr2,应该怎么写? 解决方案 A={}: A.options= { attr1:100, attr2:300, attr3:function(){ return attr1*attr2 } } 获取attr3的值: var value = A.options.a

如何取得ChipmunkConstraint实例对象的私有属性

在 如何用代码禁用SpriteBuilder中创建的关节 一篇中提到了要想禁用一个关节就需要将其无效化. 然后我们在重新创建新关节时,可以参考该关节的原始参数. 但是代码中只能直接访问到bodyA和bodyB两个属性,anchorA.anchorB以及minDistance.maxDistance等4个属性无法直接访问到,书上称之为这些属性为私有属性(private property).其实只要你包含了对应的头文件,就可以在自己的代码中直接引用它们. 由于这些属性值在例子中永不变化,所以书中使用

javascript使用闭包模拟对象的私有属性和方法_javascript技巧

最近因为做了一个项目,其中涉及到了js私有方法,这个概念在其语言里面是很常见的,很多语言都有private这个关键字,只要在一个类的前面加上private就表示申明了一个私有方法,但是javascript在面向对象的方面没有那么多的特征,他没有专门的private关键字,.要做到这一点就必须使用js自己的一些特性来变相的完成. 首先javascript里面有一个高级特性叫闭包,简单的说js的闭包可以理解成是一种现象或者特性,一般出现在两个函数嵌套的情况下,看例子: function a(){ v

javaScript 利用闭包模拟对象的私有属性_javascript技巧

JavaScript缺少块级作用域,没有private修饰符,但它具有函数作用域.作用域的好处是内部函数可以访问它们的外部函数的参数和变量(除了this和argument.内部中的函数中的this指向全局对象,argument指向内部函数的函数参数).我们可以利用这种属性来模拟面向对象中的私有属性. 复制代码 代码如下: var myObject=function(value){ var value=value || 0; return{ increment:function(num){ val

派生类与派生类对象对基类成员的访问

区分"派生类对象"和"派生类"对基类成员的访问权限.    "派生类对象"对基类成员的访问权限:      (1)对于公有继承,只有基类的公有成员可以被"派生类对象"访问,其他(保护和私有)成员不能被访问.      (2)对于私有继承和保护继承,基类中所有成员都不能被"派生类对象"访问.    "派生类"对基类中成员的访问权限:     (1)对于公有继承,基类中的公有成员和保护成