在Struts2中 对这些 # % {} {#} 等的区别  为什么它们写的不一样 也详细也好!

解决方案 »

  1.   

    #和%是ognl表达式符号:1>.#操作符:  1>.访问非根对象值。例:<s:property value="#request.name" />
      2>.构建Map和List。例:<s:select list="#{'1':'男', '2':'女'}" name="sex" />
      3>.集合过滤投影。  例:<s:iterator value="lst.{?#this.age > 10}"></s:iterator>2>.%操作符:
      
        1>.用于判断。<s:if test="%{age > 10}"><s:if>
      2>.读取国际化信息。<s:property value="%{getText('资源ky')}" />3>.%{#}操作符:
        
        1>.访问非根对象值。例:<s:property value="%{#request.name}" />
      2>.访问ActionContext中数据。例:<s:property value="%{#name}" />
      

  2.   

    是ognl的讲解:
    http://zhxing.javaeye.com/blog/375823
      

  3.   

     S2 是属性驱动
       <s:property value="#request.userName" > 也可以直接 ${userName}
       在S2 标签中如:<s:list id="userName" name="userName" value=%{userName} />
       在普通html标签 <input id="userName" name="userName" value="<s:property value="#request.userName" > 或者${userName} " >
       基本上就是如上的用法。
      

  4.   

      <s:list  改成 <s:select 
       不好意思,写错了
      

  5.   

     struts2中的 # $ %http://blog.csdn.net/starnc/archive/2009/04/03/4032191.aspx
      

  6.   

    有没有详细点的 比如说到了使用#访问非根对象 什么是非根对象? 那些属于非根对象?(在不使用<s:debug></s:debug>的情况下知道那些属于根对象?) 
      

  7.   

    根对象和非根对象是OGNL的范围:1.根对象:值栈(ValueStack)。
      访问:直接输出属性名。<s:property value="name" />2.非根对象:application, session, request, parameters和attr。
      访问:<s:property value="#request.name" />