struts2-OGNL
来源:互联网 发布:画脑图的软件 编辑:程序博客网 时间:2024/05/16 06:41
OGNL(Object Graph Navigation Language)->提高数据访问功能
#bar.foo.blath-->意味着bar.getFoo().getBlath()方法的返回值,若访问的属性属于根对象,则可以直接访问该属性,如foo;否则,如:#bar.blath
--------------------------------------------------------------
访问构造方法:
<s:property value="new bean.Student()"/>
创建对象调用属性、方法:
<s:property value="new bean.Student().firstName"/>
<s:property value="new bean.Student().getFirstName()"/>
<s:property value="new bean.Student().no"/>
<s:set name="student" value="new bean.Student()"/>
no:<s:property value="#student.no"/><br/>
直接调用value stack(值栈)中属性
<s:property value="myStudent"/>
<s:property value="myStudent.firstName"/><br/>
<s:property value="myStudent.setFirstName('仄仄仄仄仄')"/>
<s:property value="myStudent.getFirstName()"/>
<s:property value="getList()"/><br/>
学校学生的姓名:
<s:property value="mySchool.student.firstName"/>
学校学生的学号:
<s:property value="mySchool.student.getNo()"/>
学校学生成绩:
<s:property value="mySchool.student.setScoreJava(12)"/>
<s:property value="mySchool.student.getScoreJava()"/>
学校的地址:
<s:property value="mySchool.show()"/>
<br/>
访问action中静态信息(@类名@静态变量或方法)——
<s:property value="@bean.OGNLTestAction@address"/><br/>
<s:property value="@bean.OGNLTestAction@show()"/><br/>
访问JDK中静态常量PI:
<s:property value="@java.lang.Math@PI"/><br/>
访问JDK中静态方法max():
<s:property value="@java.lang.Math@max(5,6)"/><br/>
常量""与'':
<s:property value='"字符串"'/>
<s:property value="'c'"/>
<s:property value="100"/><br/>
运算符mod(取模):
<s:property value="9%7"/><br/>
<s:property value="myList"/><br>
<s:iterator value="myList" status="st">
<s:property value="#st.count"/>:
<s:property value="no"/>,
<s:property value="firstName"/>,
<s:property value="scoreJava"/><br>
</s:iterator><br>
list:
<s:property value="list"/><br>
<s:iterator value="list" status="st">
<s:property/><br>
<s:set name="count" value="#st.count"></s:set>
</s:iterator>
list.count:
<s:property value="#count"/><br/>
size:
<s:property value="list.size"/><br/>
empty:
<s:property value="list.isEmpty"/><br/>
<s:property value="set"/><br>
<s:property value="locale"/><br>
<s:property value="myStudent"/><br>
<s:property value="mySchool."/><br>
<s:property value="map"/><br>
数组:
<s:property value="getA()"/><br/>
<s:property value="a"/><br/>
数组a.length:
<s:property value="a.length"/><br/>
属性调值与方法调值(栈stack):
<s:property value="#student.no"/>
<s:property value="#student.getNo()"/>
<s:property value="#student.setNo(123)"/>
<s:property value="#student.no"/>
<s:property value="#student.getNo()"/><br/>
属性调值与方法调值(值栈value stack):
<s:property value="myStudent.no"/>
<s:property value="myStudent.getNo()"/>
<s:property value="myStudent.setNo(123)"/>
<s:property value="myStudent.no"/>
<s:property value="myStudent.getNo()"/><br/>
student与myStudent:
<s:property value="myStudent"/><br/>
<s:property value="#student"/><br/>
<s:property value="#student"/><br/>
<s:debug/>
map:
<s:property value="map"/><br/>
<s:property value="map.keys"/><br/>
<s:property value="map.values"/><br/>
<s:property value="map[1]"/><br/>
投影某列属性:
<s:property value="myList.{firstName}"/><br/>
投影列的某个属性:
<s:property value="myList.{scoreJava}[2]"/><br/>
投影列的某个对象属性:
<s:property value="myList[2].{scoreJava}"/><br/>
筛选匹配选择逻辑的元素:
<s:property value="set.{?#this.no>1}.{firstName}"/><br/>
筛选第一个元素:
<s:property value="set.{^#this.no}"/>-
<s:property value="set.{^#this.no}.{firstName}"/><br/>
筛选最后一个元素:
<s:property value="set.{$#this.no}"/>-
<s:property value="set.{$#this.no}.{scoreJava}"/><br/>
<s:property value=""/><br/>
筛选+投影:<s:property value="set.{?#this.no>1}.{firstName}"/>
lambda表达式:
<s:property value="#f=:[#this==1?1:#this*#f(#this-1)],#f(4)"/><br/>
<s:property value="#f=:[#this==1?1:#this==2?2:#f(#this-1)+#f(#this-2)],#f(6)"/><br/>
值栈(action是value stack 的栈顶元素):
<br/>
top(输出的是action的实例):<s:property value="top"/>
<br/>
top.myList[0]:<s:property value="top.myList[0]"/>
<br/>
[0]:<s:property value="[0]"/>
<br/>
[1]:<s:property value="[1]"/>
<br/>
[2]:<s:property value="[2]"/>
<br/>
#:
<s:property value="#f"/><br/>
#动态构建map:
<s:property value="#{1:'value1',2:'value2'}"/><br/>
#set与property:
<s:set name="foobar" value="#{'key1':'value1',2:'value2'}" />
<s:property value="#foobar.keys"/>
<s:property value="#foobar.values"/><br/>
map的第一个元素:
<s:property value="#foobar['key1']"/><br/>
map迭代:
<s:iterator value="#foobar.keys" var="key" status="st">
<s:property value="#foobar[#key]"/>
</s:iterator>
<br/>
<p>不使用%:<s:url value="#foobar['key1']" /></p>
<p>使用%:<s:url value="%{#foobar['key1']}" /></p>
- struts2 ognl
- struts2 OGNL # % $
- struts2 OGNL # % $
- struts2 OGNL
- OGNL struts2
- struts2 OGNL
- Struts2 OGNL
- struts2 OGNL # % $
- Struts2---->OGNL
- Struts2 OGNL
- struts2 OGNL
- Struts2-OGNL
- struts2 OGNL
- STRUTS2 OGNL
- struts2 OGNL # % $
- struts2 - OGNL
- Struts2 OGNL
- struts2-OGNL
- jsp中引用css无效的替代方法
- Linux wait()函数 好文章
- 两个div之间的空隙
- 杭电 2049
- java 内存监控使用
- struts2-OGNL
- Oralce 归档日志开启与关闭
- 搞笑短语
- C++之练习题24
- SeekBar 显示进度条颜色却不显示背景颜色的问题
- auto_ptr解析
- python 访问的时候加上头域
- this&super&final
- hdu-2048-神、上帝以及老天爷