OGNL中那些# % $ 这三个符号怎么用?适用于什么场合?网上搜了一堆大同小异的说法,看不太明白,谁能说明白点,谢谢了
解决方案 »
- Tomcat Project和Dynamic Web Project有什么区别呢?
- 求教,在jfreechart生成的时间曲线图的节点上显示出的数据时间不对是怎么回事
- java web 中使用css文件
- struts 附件上传问题
- 请帮帮看看好吗??
- 如何用javascript修改table单元格的背景色?马上给分!
- 菜鸟问题:关于出错信息
- 关于SmartUpload上传的文件改名
- 我要把在applet里用swing的jtable展现的数据表格,实现打印的功能且可由用户选择需打印的列,该怎么办?不知这种表格能否也象jsp或javascript那样转换成excel呢?
- 关于连接数据库在删除功能
- 请问java的web应用程序怎样防止“跨站请求伪造”
- javabean 蔡鸟请教
$一般用于取得后台action或model对应的值
%s2标签里会用到
在Struts2的标签中,可以直接访问Valuestack中的对象,对于Valuestack中的根对象,可以不需要加#号直接访问(如 action实例的属性),而对于非根对象,则需要通过加#来访问(如Valuestack中存储的Session、Application等对象)。
而对于%的使用,主要是用来包装需要计算的表达式。举一个应用的实例吧:
有时候需要通过Session来携带一些信息到前台,如一些类似“修改成功”的提示信息,当这些信息在前台被使用之后,为了不让这些信息影响到其他页面,需要立即将Session中的相应信息清除。此时,可以使用<s:property value="%{removeSession('attrId')}" />来将Session中attrId的值删除(注:removeSession()是action对象中定义的一个方法)。在struts2中action传递给jsp中的数据是保存在OgnlValueStack中的,所以在jsp页面中如果想利用脚本而不是sturts标签获取传入值的话,尽量使用OgnlValueStack的值获得,例如:
<%...OgnlValueStack stack = (OgnlValueStack) request.getAttribute("struts.valueStack");
Article article = (Article)(stack.findValue("article"));%>
1>.取得国际化信息:
<s:property value="%{getText('资源key')}" />
2>.页面取值用:
<s:property value="userName" />等于<s:property value="%{userName}" />2.$操作符:
1>.xml校验读取国际化信息:
<message>${getText('资源文件key')}</message>
2>.配置文件传递参数:
<action name="A" method="doTest" class="TestAction">
<result type="redirectAction">
<param name="actionName">B</param>
<param name="bUserName">${aUserName}</param>
</result>
</action>
3>.集合过滤:
list.{$#this.age > 10}3.#操作符:
1>.非根对象访问:
<s:property value="#request.userName" />
2>.构造Map:
<s:select name="sex" list="#{'1':'男', '2':'女'}"/>
3>.集合过滤:
list.{?#this.age > 10}
4>.Action范围数据访问:
<s:set name="age" value="30" />
<s:property value="#age" />
5>.<s:iterator />中应用
<s:iterator value="list" status="sts">
<s:property value="#sts.count" />
</s:iterator>