(15)Struts2_OGNL讀取Object棧

Struts2_OGNL

利用 s:property 標籤和 OGNL 表達式來讀取值棧中的屬性值

1). 值棧中的屬性值:

  • 對象棧: 對象棧中某一個對象的屬性值
  • Map 棧: request, session, application 的一個屬性值 或 一個請求參數的值.

讀取對象棧中對象的屬性:

1.若想訪問 Object Stack 裏的某個對象的屬性. 可以使用以下幾種形式之一:

  • object.propertyName ; object[‘propertyName’] ; object[“propertyName”]

2.ObjectStack 裏的對象可以通過一個從零開始的下標來引用. ObjectStack 裏的棧頂對象可以用 [0] 來引用, 它下面的那個對象可以用 [1] 引用.

  • [0].message
  • 若在指定的對象裏沒有找到指定的屬性, 則到指定對象的下一個對象裏繼續搜索. 即 [n] 的含義是從第 n 個開始搜索, 而不是隻搜索第 n 個對象

3.若從棧頂對象開始搜索, 則可以省略下標部分: message

  • 結合 s:property 標籤: <s:property value="[0].message" /> <s:property value="message" />


默認情況下, Action 對象會被 Struts2 自動的放到值棧的棧頂.


編碼:

同時借用helloworld中的代碼:

Show.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <body>
        <s:debug></s:debug>
      ID:${id}<br>
          編號:${ dlh}<br>
       姓名:${ name}<br>
       部門:${ bmmc}<br>
      name:<%=request.getAttribute("name") %><br>
      name:<s:property value="name"/><br>
      name[0]:<s:property value="[0].name"/><br>
  </body>
</html>

此時我們在action方法中手動壓入一個對象:

GG_CZY.java

    public String save() {
        if(this.id==null){
            this.id = UUID.randomUUID().toString().replace("-", "");
        }

        //1.獲取值棧
        ValueStack stack = ActionContext.getContext().getValueStack();

        //2.給新對象複製
        GG_CZY czy = new GG_CZY();
        czy.setName("王小二");
        czy.setBmmc("放牛");

        //3將新對象壓入值棧中
        stack.push(czy);

        return "save";
    }

Show.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <body>
        <s:debug></s:debug>
      ID:${id}<br>
          編號:${ dlh}<br>
       姓名:${ name}<br>
       部門:${ bmmc}<br>
      name:<%=request.getAttribute("name") %><br>
      name:<s:property value="name"/><br>
      name[0]:<s:property value="[0].name"/><br>
      name[1]:<s:property value="[1].name"/><br>
  </body>
</html>


注意事項

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章