概述
1.很多同学不知道OGNL是什么,先扫一下盲吧。
OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。OGNL可以方便地操作对象属性的开源表达式语言,使页面更简洁;
2.维基网上给的定义:
Object-Graph Navigation Language (OGNL), created by OGNL Technology, is an open-source Expression Language (EL) for Java, which, while using simpler expressions than the full range of those supported by the Java language, allows getting and setting properties (through defined setProperty and getProperty methods, found in JavaBeans), and execution of methods of Java classes. It also allows for simpler array manipulation.
OGNL 是一种为了java,用OGNL技术创建的开源的表达式语言,它运用比较简单的表达式但是能够较全面地被java支持,允许获取和设置属性(通过已经在JavaBeans中定义好的setProperty和getProperty),并且允许Java类中方法的执行,它还允许简单数组的处理。
3.The Action instance is always pushed onto the value stack. Action的实例被推到值湛,所以Action中的属性直接访问就可以了。
<s:property value="postalCode"/> postalCode是某个Action中的一个属性值。
4.Other (non-root) objects in the ActionContext can be rendered use the # notation. 其他放到ActionContext中的对象可以通过#符号来获得。
<s:property value="#session.mySessionPropKey"/> or <s:property value="#session['mySessionPropKey']"/>
ActionContext.getContext().getSession().put("mySessionPropKey", "mySessionPropKey"); 把mySessionPropKey属性设的值设置成“mySessionPropKey“。
5. 下面是一个JavaBean的代码
package com.broadvision.ognl;
public class Employer {
private String name;
private int salary;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
@Override
public String toString() {
return "The emplyer name and salary is "+name+" ,and " +salary;
}
}
下面是设置Employer的代码:
Employer employer = new Employer();
employer.setName("James");
employer.setSalary(10000);
ActionContext.getContext().getSession().put("employer", employer);
6.访问对象的属性可以通过如下的方式
(1)方式一:<s:property value="#session.employer.name"/>
(2)方式二:<s:property value="#session['employer'].name"/>
7.访问对象的方法(非静态的方法)
<s:property value="#session.employer.toString()"/> toString()是方法名
8.OGNL supports basic lamba expression syntax enabling you to write simple functions. OGNL支持基本的表达式语法保证你能写出简单的基本功能。
Fibonacci: if n==0 return 0; elseif n==1 return 1; else return fib(n-2)+fib(n-1);
fib(0) = 0
fib(1) = 1
fib(11) = 89
OGNL表达如下:
<s:property value="#fib =:[#this==0 ? 0 : #this==1 ? 1 : #fib(#this-2)+#fib(#this-1)], #fib(11)" /> 输出 89 .
最后
以上就是彪壮冥王星为你收集整理的Struts2中的OGNL初步认识的全部内容,希望文章能够帮你解决Struts2中的OGNL初步认识所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复