Methods 访问对象属性的JSTL表达式语言
今天我在学习一个让我挠头一个小时的教程。考虑:Methods 访问对象属性的JSTL表达式语言,methods,jstl,el,getter,Methods,Jstl,El,Getter,今天我在学习一个让我挠头一个小时的教程。考虑: public class MyClass { public int getTotal() { amount = 100; return amount; } } 以及JSP的摘录: <p>Total: ${objectOfTypeMyClass.total}</p> //object instantiated elsewhere Total:${objectOfTypeMyC
public class MyClass {
public int getTotal() {
amount = 100;
return amount;
}
}
以及JSP的摘录:
<p>Total: ${objectOfTypeMyClass.total}</p> //object instantiated elsewhere
Total:${objectOfTypeMyClass.Total}//在别处实例化的对象
代码中没有一个名为“total”的实例变量被声明或使用过。在整个项目中(JSP中除外)对单词“total”的唯一引用是方法getTotal()
因此,经过一些绝望的最后尝试后,表达式语言的计算结果似乎是“调用someObject对象的getVar()方法”
我花了一个多星期的时间学习这个长教程,认为${someObject.var}是说“直接从someObject获取保存的实例变量”var
我的观察结果是否正确?为了使用EL引用任何实例变量,必须提供一个名为getVarname()的相应getter方法,其中“Varname是实例变量的名称
此外,EL在这方面似乎不区分大小写。在上面的示例中,${objectOfTypeMyClass.total}中的“total”都是小写,其中方法getTotal()有一个大写字母“T”
既然这样,为什么我们不需要实例化变量“total”?我猜EL实际上并没有引用实例变量…只是一个getter方法
提供什么?这应该可以:
public class MyClass {
private int total = 100;
public int getTotal() {
return total;
}
...
}
TypeMyClass.total中的
对象中的
是JSTL EL点运算符。它可以做一些不同的事情。包括:
map.key
从存储在key
下的map
中访问一个值。或
object.property
使用“JavaBeans”约定从object
访问property
李>
我的观察结果是否正确?为了使用EL引用任何实例变量,必须提供一个名为getVarname()的相应getter方法,其中“Varname”是实例变量的名称
没错。EL遵守中所述的要求
此外,EL在这方面似乎不区分大小写。在上面的示例中,${objectOfTypeMyClass.total}中的“total”都是小写,其中方法getTotal()的大写字母为“T”
不,它当然不区分大小写。这是特定的行为<代码>${bean.Total}
将无法工作
既然这样,为什么我们不需要实例化变量“total”?我猜EL实际上并没有引用实例变量…只是一个getter方法
这是因为它应该遵守Javabean规范
总之,阅读这两个规范,一切都会变得清晰:)
另见: