在struts2的应用中,JSP页面中包含如下内容代码:<c:if test="${str==1}">checked</c:if><s:if test="%{str==1}">checked</c:if><s:if test='#typeItem.key==str'>selected</s:if>请问其中表达式中的$,%,#都代表什么含义,有何区别

解决方案 »

  1.   

     $ # %的区别a)         $用于i18n和struts配置文件b)         #取得ActionContext的值c)         %将原本的文本属性解析为ognl,对于本来就是ognl的属性不起作用                         i.              参考<s:property 和 <s:include
      

  2.   

    1.<c:if test="${str==1}">checked</c:if>
    中的$是EL表达式的用法。2.<s:if test="%{str==1}">checked</c:if>
    中的%是OGNL表达式的用法,主要用于判断和计算用,struts2默认支持OGNL表达式。3.<s:if test='#typeItem.key==str'>selected</s:if>
    中的#也是OGNL表达式的用法,主要用于访问非根对象属性。struts2根对象是valueStack,其他是非根对象。