struts2对象图像导航语言(OGNL



struts2对象图像导航语言(OGNL

struts2对象图像导航语言(OGNL)

注:ognl可以在action中创建对象cat传递参数,这个对象1中的参数可以是对象dog。那么在传递参数时使用 cat.dog.name=“tom”使用struts标签获取参数是 <s:property value=”cat.dog.name”/>

一。两个对象关联的实例

1.包com.ru.domain里面的两个对象。

dog.java

public class Dog { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }

cat.java

public class Cat { private Dog dog;//属性是dog对象

public Dog getDog() { return dog; }

public void setDog(Dog dog) { this.dog = dog; } }
2.ognlActon.java使用cat对象接收参数。

public class ognl extends ActionSupport implements SessionAware { //获取传递的参数 private Cat cat;

public Cat getCat() { return cat; } public void setCat(Cat cat) { this.cat = cat; } //session private Map<String, Object> session;

@Override public String execute() throws Exception { return “ognl1″; } public void setSession(Map<String, Object> session) { // TODO Auto-generated method stub this.session=session; } } 3.login.jsp传递参数

<body>   <form action=”ognl1?user” method=”post”>   用户名:<input type=”text” name=”cat.dog.name”/><br/>//传递的参数名 密 码:<input type=”password” name=”cat.dog.age”/><br/> <input type=”submit” value=”登录”/><br/> </form> </body>

4.ognl1.jsp接收参数

//引入标签

<%@taglib uri=”/struts-tags” prefix=”s”%>

<body> <h2>ognl第一个页面</h2> 这是对值栈的访问用户名: <s:property value=”cat.dog.name”/> <s:debug/> </body>

二。使用对象的普通方法

第一个实例

1.ognl.java

//使用属性获取参数,必须有set和get方法

private String password;

public String getPassword() { return password; } public void setPassword(String password) { this.password = password; }
2.ognl.jsp


//使用字符串的length方法

<s:property value=”password.length()”/>

第二个事例

1.ognl.java

//使用对象获取传递的参数 private Cat cat; public Cat getCat() { return cat; } public void setCat(Cat cat) { this.cat = cat; }

2.Cat.java

public class Cat { private Dog dog; public Dog getDog() { return dog; } public void setDog(Dog dog) { this.dog = dog; }

//这里有一个方法,可以在jsp中直接调用函数 public String voice(){ return “miao”; } }

3.ognl.jsp

<s:property value=”cat.voice()”/>

三.访问静态方法和变量

要访问静态方法必须在sruts.xml中配置

<constant name=”struts.ognl.allowStaticMethodAccess” value=”true”></constant>

否则无法访问

注:访问静态方法时,可以在jsp页面直接获取参数,

1.staticclass.java

public class staticclass { public static String name=”如”; public static String test(){ return “这是一个静态方法”; } } 2.ognl.jsp

//访问时格式:@类路径@静态变量/静态方法

静态变量:<s:property value=”@com.ru.domain.staticclass@name“/><br>

静态变量:<s:property value=”@com.ru.domain.staticclass@test()”/><br

四.访问集合和投影

struts2对象图像导航语言(OGNL)

http://blog.sina.com.cn/s/articlelist_2540587351_0_1.html