OGNL表达式和EL表达式、JSTL表达式的比较
OGNL表达式
OGNL一般结合struts2一起使用,在使用的JSP页面需要引入tablib <%@ taglib uri="/struts-tags" prefix="s"%>
OGNL表达式:
1.property标签:用于输出值,当访问session和application等域的时候#标记是不可少的
<s:property value="#session.user.name"/> 表示输出session域中的user对象的name属性,
<s:property value="#session.name"/>表示获取session里面的那么属性,
<s:property value="#application.user.name"/>表示获取application域中的user对象的name属性,
ActionContext.getContext().getSession().put("user", p);//后台struts2的数据存入。
2.set标签:<s:set name="list" value="{‘a‘,‘b‘,‘c‘,‘d‘}"></s:set> 给一个list对象设置值。
3.iterator标签:迭代标签,多用于解析list,map等集合对象
list
<table>
<s:iterator var="n" value="#session.list" status="tag"> //迭代 var表示的是list中的一个个对象,s标签自动循环下一个对象,status指的是当前循环次数(从1开始)
<s:if test="#tag.odd"> //if-else标签 判断奇偶
<tr bgcolor="red">
<td>
<s:property value="#n" />
</td>
</tr>
</s:if>
<s:else>
<tr>
<td>
<s:property value="#n" />
</td>
</tr>
</s:else>
</s:iterator>
</table>
map
<s:iterator value="#session.map">
<s:property value="key"/> : <s:property value="value"/>
</s:iterator>
4.url 标签
<s:url action="test" namespace="/" var="testMethod"></s:url> //url标签是声明一个url链接到域中对象,然后通过a标签的href获取这个对象,所以下面两个a标签的作用是一样的,都是跳转至根空间下的test action的testMethod方法里。
<s:a href="test">11111</s:a>
<s:a href="%{testMethod}">11111</s:a>
5.form 表单
<s:form action="test" method="testMethod">
<s:textfield name="name" label="姓名"/>
<s:password name="name" label="密码"/>
<s:select list="#session.map" listKey="key" listValue="value" label="下拉框">//下拉框,后台可以用map传递到前台
</s:select>
<s:checkbox label=" 爱好" fieldValue="true" name="like"></s:checkbox>
<s:checkboxlist list="#session.map" listKey="key" listValue="value" name="like" value="{‘one‘}"></s:checkboxlist> //checkbox组,后台可以用map传递到前台,value中放入list则表示初始化勾选中的项
</s:form>
效果图如下:
EL表达式
JSTL表达式