这些天写项目用到ognl表达式,在此总结,持续更新。
在此不写那些晦涩难懂的定义,纯属个人理解。
想弄懂struts必须搞懂值栈。值栈就是struts存放数据的一个库。
1、值栈
值栈由两部分组成。1.对象栈,存放action类对象。如果action实现了ModelDriven接口,会把具体model对象压入对象栈。先压action。
2.map,就是以map(key,value)形式存在的数据。
2、action访问值栈
在action中想要访问对象栈,用ActionContext.getContext.getValueStack()的push(obj)和pop(obj)方法。在action中想要访问map,用ActionContext.getContext.put(key,value)和get(key)方法。
3、jsp页面中访问值栈用ognl表达式。.
ognl表达式的格式:在struts.xml中用${表达式}
在jsp页面中用%{表达式} 。之前必须加入标签<%@ taglib uri="/struts-tags" prefix="s"%>
ognl表达式的语句:如%{user}:在值栈中查找user,顺序为先在对象栈查找如果找到就返回。
如没在对象栈中找到则去map中找相应key为user的值找到就返回。如都没有返回null。
%{#user}:直接在map中查找相应key为user的值。
所以,如果你在action中想值栈里存入数据,就可以在jsp中通过ognl表达式获得你所存放的数据。