Value stack棧中的值:

每一個(gè)動作在執(zhí)行相應(yīng)方法之前,都會創(chuàng)建一個(gè)value stack的對象。value stack用來保存這個(gè)動作對象和其他對象。

可以使用el表達(dá)式和Struts2標(biāo)簽進(jìn)行對值棧的訪問:

使用Struts2標(biāo)簽,需要引入標(biāo)簽庫:

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

   

<body>

       ${errors.name[0]}

       <br />

       <s:property value="errors.name[0]" />

       <s:debug /><!-- debug標(biāo)簽會將頁面訪問到的棧值通過一個(gè)a標(biāo)簽顯示出來 -->

    </body>

 

Action中進(jìn)行簡單的數(shù)據(jù)校驗(yàn):

package actions;

 

import com.opensymphony.xwork2.ActionSupport;

import enetitys.User;

 

public class UserAction extends ActionSupport {

   

    private User user;

   

    public User getUser() {

       return user;

    }

 

    public void setUser(User user) {

       this.user = user;

    }

 

    public String add(){

       System.out.println("name="+user.getName());

       System.out.println("admin".equals(user.getName()));

       if("admin".equals(user.getName())){

           return SUCCESS;

       }else{

           this.addFieldError("name", "該用戶不存在!"); //添加一個(gè)屬性錯(cuò)誤.

           return "error";

       }

    }  

}

 

提交地址:

Struts2中的Value Stack/Stack Context - 盡頭 - 深山憨娃

點(diǎn)擊Debug鏈接.下面的圖片中灰色背景的將顯示出來, 還有很多. 抓圖沒辦法全部抓下來.

Struts2中的Value Stack/Stack Context - 盡頭 - 深山憨娃

可以發(fā)現(xiàn),在值棧中,都是以Map形式存儲的值,actionErrors存儲的是action的錯(cuò)誤.fieldErrors存儲的屬性錯(cuò)誤.errors包含這兩者.

看下面的Stack Context.顧名思義,棧的上下文環(huán)境.

訪問的時(shí)候,通過#key來訪問.如下:假設(shè)reques中有名為obj屬性的值.使用OGNL表達(dá)式訪問.

<s:property value="#request.obj” />這樣就可以取到stack Context中的值.