Struts 2 ONL表現の実例

7694 ワード

Object Graph Navigation Language:オブジェクトマップナビゲーション言語は、ポイントでメンバー変数にアクセスすることです。

<s:property value="cat.name"/> 
例1:
struts.xml:

<package name="ognl" namespace="/ognl" extends="struts-default"> 
  <action name="og1" class="cn.edu.hpu.action.OgnlAction1"> 
  <result>/ognl.jsp</result> 
  </action> 
</package> 
OgnlAction 1.java:

package cn.edu.hpu.action; 
import com.opensymphony.xwork2.ActionSupport; 
public class OgnlAction1 extends ActionSupport{ 
  private String username; 
  private String password; 
  public String getUsername() { 
    return username; 
  }  
  public void setUsername(String username) { 
    this.username = username; 
  } 
  public String getPassword() { 
    return password; 
  } 
  public void setPassword(String password) { 
    this.password = password; 
  } 
  @Override 
  public String execute() throws Exception { 
    // TODO Auto-generated method stub 
    return super.execute(); 
  } 
} 
アクセスリンク:

<a href="<%=basePath%>ognl/og1?username=jack&&password=111" rel="external nofollow" >OGNL</a><br/> 
結果画面:

OGNL SUCCESS!!<br/> 
  <ol> 
    <li>      action     1=<s:property value="username"/></li> 
    <li>      action     2=<s:property value="password"/></li> 
  </ol> 
  <s:debug></s:debug> 
結果の表示:
ONL SUCCESS
アクセス値スタックのactionの一般プロパティ1=jack
アクセス値スタックのactionの一般的な属性2=111
[デバッグ]
ps:[Debug]をクリックすると、スタック値の中にusernameとpasswordがあることが確認できます。
例2:
struts.xml:

<package name="ognl" namespace="/ognl" extends="struts-default"> 
 <action name="user2" class="cn.edu.hpu.action.UserAction2" method="add"> 
   <result name="success">/ognl.jsp</result> 
  </action> 
</package> 
UserAction 2.java:

package cn.edu.hpu.action;  
import cn.edu.hpu.mode.User; 
public class UserAction2 {  
  private User user;    
  public String add(){ 
    System.out.println("name="+user.getName()); 
    System.out.println("age="+user.getAge()); 
    return "success"; 
  } 
  public User getUser() { 
    return user; 
  } 
  public void setUser(User user) { 
    this.user = user; 
  }   
} 
User.java:

package cn.edu.hpu.mode;  
public class User {      
  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; 
  }    
} 
リンク:
アクセスUser属性

<a href="<%=basePath%>ognl/user2?user.name=tom&&user.age=21" rel="external nofollow" >OGNL2</a><br/> 
(あなたがuser.XXXXを伝えてこそ構築できる)
結果ページ:

<%@taglib uri="/struts-tags" prefix="s" %> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
 <head> 
  <base href="<%=basePath%>" rel="external nofollow" > 
  <title>My JSP 'ognl.jsp' starting page</title> 
 </head> 
  
 <body> 
  OGNL SUCCESS!!<br/> 
  <ol> 
    <li>            (get set    ): 
    <br/> 
 user-age:<s:property value="user.age"/>|<s:property value="user['age']"/></li> 
  </ol> 
  <s:debug></s:debug> 
 </body> 
</html> 
結果を表示:
ONL SUCCESS
アクセス値スタックのオブジェクトの通常の属性(get setメソッド):
user-age:21|21
[デバッグ]
[Debug]をクリックすると、スタック値の中にuserオブジェクトが存在することが分かります。
例3:
struts.xml

<package name="ognl" namespace="/ognl" extends="struts-default"> 
  <action name="cat1" class="cn.edu.hpu.ognl.OgnlAction2"> 
   <result name="success">/ognl.jsp</result> 
 </action> 
</package> 
OgnlAction 2.java:

package cn.edu.hpu.ognl; 
 
import cn.edu.hpu.mode.Cat;  
import com.opensymphony.xwork2.ActionSupport; 
public class OgnlAction2 extends ActionSupport{   
  private Cat cat; 
  public Cat getCat() { 
    return cat; 
  } 
  public void setCat(Cat cat) { 
    this.cat = cat; 
  } 
  public String execute(){ 
    return "success"; 
  } 
  public String m(){ 
    return "Hello"; 
  } 
} 
Cat.java:

package cn.edu.hpu.mode;  
public class Cat {  
  private Dog friend; 
  public Dog getFriend() { 
    return friend; 
  } 
  public void setFriend(Dog friend) { 
    this.friend = friend; 
  }  
  public String miaomiao(){ 
    return "miaomiao"; 
  } 
} 
Domg.java:

package cn.edu.hpu.mode;   
public class Dog {    
  private String name;    
  public Dog(){      
  }    
  public Dog(String name){ 
    super(); 
    this.name=name; 
  }   
  public String getName() { 
    return name; 
  } 
  public void setName(String name) { 
    this.name = name; 
  }  
  @Override 
  public String toString() { 
    // TODO Auto-generated method stub 
    return "dog:"+name; 
  } 
} 
リンク:
 アクセスCat属性

<a href="<%=basePath%>ognl/cat1?cat.friend.name=littleBoy" rel="external nofollow" >OGNL3</a><br/>
結果ページ:

<li>            (get set    ): 
    <br/> 
    cat-friend-name:<s:property value="cat.friend.name"/></li> 
結果:
アクセス値スタックのオブジェクトの通常の属性(get setメソッド):
cat-friend-name:littleBoy
「Debug」を見てみると、catのみが値スタックにあり、catを介してdogに接続し、dogの属性を取得することを説明しています。
アクセスcat方法:

<a href="<%=basePath%>ognl/cat1" rel="external nofollow" rel="external nofollow" >OGNL4</a><br/>
結果ページ:

<li>            : 
    <br/> 
    cat-miaomiao:<s:property value="cat.miaomiao()"/></li> 
結果:
アクセス値スタックのオブジェクトの通常の属性:
cat-miaomiao:miaomiao
actionにアクセスするための一般的な方法:

<a href="<%=basePath%>ognl/cat1" rel="external nofollow" rel="external nofollow" >OGNL5</a><br/> 
結果ページ:

<li>     action     : 
    <br/> 
    action-m():<s:property value="m()"/></li> 
結果:
アクセス値スタックにおけるacionの一般的な方法:
actionn-m():ハロー
締め括りをつける
以上が、Struts 2 OGAL表現の実例について詳しく説明した内容の全部です。何か問題がありましたら、いつでもメッセージを残してください。