对象视图导航语言: OGNL 的应用
<%@ taglib prefix="s" uri="/struts-tags" %> 引用structs中的tags标签
定义一个Action,要生成所有属性(成员,实体)的get和set方法:
public class LoginAction {
private String name;
private String pass;
private int age;
private Person person;
private List<Person> persons;
private String url;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String check(){
persons = new ArrayList<Person>();
person = new Person("nima1",11);
Person p1 = new Person("nima2",15);
Person p2 = new Person("nima3",20);
persons.add(person);
persons.add(p1);
persons.add(p2);
return "success";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public List<Person> getPersons() {
return persons;
}
public void setPersons(List<Person> persons) {
this.persons = persons;
}
public void setPass(String pass) {
this.pass = pass;
}
}
定义一个person 实体:
public class Person {
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;
}
public Person(String name,int age){
this.age = age;
this.name = name;
}
}
在struts的配置文件中调用action中的方法,以下是成功跳转到页面过后对数据的条件显示和普通显示
<s:debug></s:debug>
获取action普通属性:
<s:property value="name" />
</br>
获取action成员实体属性:
<s:property value="person.name" />
</br>
迭代集合:
<s:iterator value="persons" var="p">
<s:property value="#p.name" />
</br>
</s:iterator>
条件迭代:满足条件的所有记录
<s:iterator value="persons.{?#this.age>11}" var="p">
<s:property value="#p.name" />
</br>
</s:iterator>
条件迭代:满足条件的最后一个
<s:iterator value="persons.{$#this.age>11}" var="p">
<s:property value="#p.name" />
</br>
</s:iterator>
条件迭代:满足条件的第一个
<s:iterator value="persons.{^#this.age>11}" var="p">
<s:property value="#p.name" />
</br>
</s:iterator>
其中 条件迭代和迭代中 属性前要加 “#” 当条件迭代时 ?# 表示满足条件的所有情况, $# 表示最后一个满足条件的 ^# 表示第一个满足条件的
调用action中的方法
<s:property value="meth()"/></br>
调用action中的成员属性中的方法
<s:property value="person.eat()"/></br>
调用action中的成员属性的方法
<s:property value="persons.size()"/><!-- persons的大小 -->
<s:property value="name.length()"/></br>
获取普通对象的静态属性:
<s:property value="@com.bruce.entity.Cat@name"/></br>
获取普通对象的静态方法:
<s:property value="@com.bruce.entity.Cat@meth()"/></br>
<!--
需要在struts.xml中加上
<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
-->
action成员对象中的普通属性:
<s:property value="person.cat.names"/>
action调用函数:
<s:property value="@@max(10,20)"/>