希望我能描述清楚哈!代码不是我写的,我问那个写的人,为啥这样,她说不知道!我郁闷了,上来问问同胞们。实在是对J2EE不太懂。先谢过。我有一个class,大概是这个样子:Class ContentClass 
{
    private string fId;
    private string fName;
    public string getId() {return fId;}
    public string getName() {return fName;}
    public ContentClass(string name) {
      fId = name + "id";
      fName = name;
    }
}然后,我初始化了一个List,每个元素都是ContentClass的一个实例。也就是一串ContentClass啦。
然后把这个List,放到Session里面去了!在jsp页面,引用的时候,用了一个循环,基本就是从sessionScope里面取出每个元素来,用condContent表示。然后打印出每个condContent的fName值。以上都看得明白。不明白的地方,在于打印。是这么用的:${condContent.name} 注意!注意!class里面明明是fName,怎么到了这里就成了name了呢?引用Id的话,用的是${condContent.id}。为什么这么用呢?我写成${condContent.fName}反而步行了!现在的问题是,我要新加一个string的属性,然后在jsp页面获得Session里面这个属性的值。要怎么做呢?这个从fName到name的转换,是怎么回事啊?是J2EE固有的属性?还是写在哪个配置文件里了呢?老大们快来救命!

解决方案 »

  1.   

    我猛然间醒悟了难道是因为那个getName()和getId()?${sessionScope.user.sex} 
    所有EL都是以 ${ 为起始、以} 为结尾的。 
    上述EL范例的意思是:从Session取得用户的性别。如果使用之前JSP代码的写法如下: 
    <% 
    User user = (User)session.getAttribute(”user”); 
    String sex = user.getSex( ); 
    %> 
    两者相比较之下,可以发现EL的语法比传统JSP代码更为方便、简洁。 
    EL提供 . 和 [ ] 两种运算符来存取数据,[ ]可以访问集合或者是数组的元素、Bean的属性。 
    下列两者所代表的意思是一样的,但是需要保证要取得对象的那个的属性有相应的setXxx()和getXxx()方法才行。
      

  2.   

    实际上ContentClass 类的get方法应该是get+属性名称
    el语言${condContent.name}是掉name的get方法 
    从规范来讲ContentClass的getName方法 应该改为getFName
    el语言写${condContent.fName}el语言取值范围问题:先从页面取,没有的话在request,没有的话在session
      

  3.   

    已经验证过了!就是这样的。
    啊,哈哈,下午太搞笑了!我竟然跑去问人家:为啥写name不写fname啊?那个人听了应该很无语吧?她只好说不知道。我们另找个时间再研究这个问题吧。
      

  4.   

    你属性的类的名称是fName...打印的时候就应该写类.Fname
      

  5.   

    没看过源码所以不清楚 不过他们取值和存值都是通过get/set方法(反射嘛..) 根据提供的属性名 获得方法(如 getXXX)
    LZ这样写很显然不是很符合规范 
      

  6.   

    getName方法是name啊,bean属性的获得是根据get/set方法来获值和赋值的,在EL中当然要那么写了。不过这种写法真的很不好,不推荐使用。
      

  7.   

    啊,是啊。她写成这样把我迷糊了半天呢。哈哈
    anyway,因为写了getname()所以jsp里面还是应该用condContent.name才对。
    她原来就这么写的,咱就继续这个风格续吧。哈哈哈
      

  8.   

    =。=总的来说,是LZ自己编码不规范造成的,但歪打正着让自己明白了个道理,恭喜!
    不论你是在action还是jsp页面中只要是你有往session或者request中存入对象或单个属性,都可以在页面以${}方式获取
    如果你存入的是对象vo,那么你就只能去取vo中定义了的属性,好比你在action中取值是:vo.getName();
    那么你页面上就是${vo.name}
    如果只是属性,随便都可以,自己定义,例如:
    不论在页面还是action中,request.setAttribute("name",vo.getName());
    页面上直接${name}就好了