关于EL表达式的小问题
有一个person类
public class Person {    private String Id="124";    public String getId() {
        return Id;
    }    public void setId(String id) {
        Id = id;
    }
}在JSP中用EL
<%@page pageEncoding="GB18030" isELIgnored="false"%>
<%
    Person person=new Person();
    request.setAttribute("person",person);
%>
${person.Id}<br>  这样是会访问不到????为什么-------------------------------------------------
但是如果我把person类的Id变为id,get/set方法也相应调整;在用${person.id}<br>  这样又可以访问成功。我知道EL表达式底层执行时调用get方法,谁能说说底层具体是怎么实现的

解决方案 »

  1.   

    默认用的是get和set方法后面的名字,而且第一字母改成小写
    getId的后面是Id,Id的第一位改成小写就是id了
    不是以成员变量来获得的,这点要注意
      

  2.   


    欢迎加入java技术群:74955800
      

  3.   

    引用 1 楼 zhangjinhu567 的回复:
    默认用的是get和set方法后面的名字,而且第一字母改成小写
    getId的后面是Id,Id的第一位改成小写就是id了
    不是以成员变量来获得的,这点要注意======================
    我知道用小写是可以得到的,但是为什么大写却拿不到,
    正如你说的:默认用的是get和set方法后面的名字,而且第一字母改成小写,我想知道为什么要改为小写,
    我猜是通过反射,在底层拼接了一个字符串,然后调用getId方法的
    不知道我猜的对吗??能在讲讲吗
      

  4.   

    用<s:debug></s:debug>在值栈中看。很清晰,,