我的问题是:例子:${name},name是从哪里取到的?疑问2:如果在struts1的action中把键值放到request,session的Attribute中,就可以在el中取到.如果在struts2的context中存放,好像也可以取到.那如果存一个map,会不会取到?为什么呢?
Map map = new HashMap();
map.put("name","AAA");struts用的不多,请指点一下.谢谢 by phoenix

解决方案 »

  1.   

    google的
    首先是访问List,页面中引用bean中list属性的方法为:#{bean.list[index]}    而对于Map,EL可以把Key作为一个属性来读取,因此对map的访问可以写为:#{bean.map.key},当然这样可以解决基本的问题,但是如果map中的key是一个包含了空格或特殊字符的String,那么很明显,这个字符串不符合作为属性名的条件,那么用上面的方法去访问明显是有问题的,所以我们很可以用另外一种方法访问Map中的value,#{bean.map[''key'']}。同时可以看到,因为EL中的内建对象基本都是用Map实现的,因此,EL中的访问方法也是:#{sessionScope[''key'']}。
    所以 ${name} 也是可以取到的.
      

  2.   

    楼主,提醒下你,EL和STRUTS是没有关系的..........EL是JSP的技术.........你GOOGLE到的那是OGNL表达式........
      

  3.   

    1.${name}
      
       是按照page->request->session->application范围查找,找到为止。2.可以指定范围输出   %{requestScope.name}
    3.struts2使用ognl表达式,struts2.1版本已经不支持EL,struts2.0版本好像还支持。  struts2.1 ActionContext中数据访问。  例: ActionContext ac = ActionContext.getContext();
          ac.put("name", "test");      jsp显示:<s:property value="#name" />
      

  4.   

    谢谢,我知道没有关系,我只是举例.struts2都换ognl表达式额...用的太少了,见笑,见谅啊