struts2学习笔记(4)OGNL表达式

1.一个Action里有一个类对象(model)类型的成员变量时,要在url里传递参数时才会new一个这个类的对象;

2.如果这模型类中有一个或多个有参数的构造函数,则需要同时显示地给出默认构造函数(即没有带参数的构造函数);

3.获取值栈中的对象属性或方法,可以用XXX.xx来得到。

4.访问静态属性或静态方法:

  <s:property value="@完整的类名@静态属性名"/>

  <s:property value="@完整的类名@静态方法名"/>

  e.g. 访问User类中的静态属性Count:

     <s:property value="@com.bpf.struts2.ogn.User@Count"/>

注:如需要在struts.xml中配置:

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


5.访问普通类的构造方法:

  <s:property value="new com.bpf.struts2.ognl.User(9)"/>

Action类:

public class UserAction extends ActionSupport
{
    private String password;
    private String username;
    private User user; //类对象类型的成员(Model)

    public String exectute()
    {
        return SUCCESS;
    }
    public String getPassword()
    {
        return password;
    }
    public User getUser()
    {
        return user;
    }
    public String getUsername()
    {
        return username;
    }
    public void setPassword(String password)
    {
        this.password = password;
    }
    public void setUser(User user)
    {
        this.user = user;
    }
    public void setUsername(String username)
    {
        this.username = username;
    }
}

Model类:User

public class User
{
    int age;
 
    public User()//不可缺少
    {
        
    }
    public User(int age)
    {
        this.age = age;
    }
    public int getAge()
    {
        return age;
    }
    public void setAge(int age)
    {
        this.age = age;
    }
    
    public String toString()
    {
        
        return "user" + age;
    }
}

JSP:

<body>
  <ol>
    <li> 访问值栈中的action的普通属性:username=<s:property value="username" /> </li>
    <li> 访问值栈中对象的普通属性:<s:property value="user.age"/> </li>
  </ol>
</body>

  

原文地址:https://www.cnblogs.com/paulbai/p/2623953.html