EL表达式与OGNL表达式的区别

EL表达式        使用环境:JSP中
格式:${表达式}

OGNL表达式       使用环境: Strtus2中(Struts2的自定义标签中、struts.xml...)
    Struts2的自定义标签的属性值中    %{表达式}// %是为了与EL标签区别,防止冲突
    struts.xml中                    ${表达式} 
    语法格式:
        %{name}
        %{#name}

//上面两个写法的一样的, %{name}表示直接从model里取值, 加上#表示从ActionContext的context里取值,#表示从map里取值
        %{#user.name}
        #{'k':'v', 'k2':'v2'} 用ognl 构建map
        {'e1', 'e2'} 用ognl构建list



    %{#{'k':'v', 'k2':'v2'} }

 

有的时候为什么不用%而用#号呢?

例如:

 <s:iterator value="#roleList">
            <tr class="TableDetail1 template">
                <td>${name}&nbsp;</td>
                <td>${description}&nbsp;</td>
                <td>
                    <s:a action="roleAction_delete?id=%{id}" onclick="return delConfirm()">删除</s:a>
                    <s:a action="roleAction_editUI?id=%{id}">修改</s:a>
                    <a href="setPrivilegeUI.html">设置权限</a>
                </td>
            </tr>
        </s:iterator>   

 

这里面: <s:iterator value="#roleList"> #roleList 这边本来就是在使用ognl表达式,所以%{}加不加无所谓 即是写成%{#roleList}也不错

但是在<s:a action="roleAction_delete?id=%{id}" onclick="return delConfirm()">删除</s:a> 因为写在""里面受到""影响,为了告诉程序这里要使用ognl表达式故加上%{}来表示,告诉程序这里使用ognl表达式输出

posted @ 2013-01-29 20:49  IamThat  阅读(651)  评论(0编辑  收藏  举报