使用ognl訪問struts2的值棧 ognlValueStack
阿新 • • 發佈:2018-12-13
前言:使用ognl和struts2標籤庫的時候要在 jsp頁面 中 加入這麼一行
<%@ taglib uri="/struts-tags" prefix="s" %>
struts(統一格式):
<action name="ognl" class="com.demo.test1.OnglAction" method="ognl1"> <result name="ognl1" >/OnglPage.jsp</result> </action>
User(統一用一個User):
public class User { String username; 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; } }
===============================================================================================================================================================
一、直接向值棧中存放資料
action:
/** * 一、直接以鍵值對的形式設定(建立)值棧stack * @return */ public String ognl1(){ ValueStack stack = ActionContext.getContext().getValueStack(); stack.set("username", "name1");//建立一個值棧的key stack.setValue("username", "name2");//對已有的值棧的value進行修改 return "ognl1"; }
jsp:
直接以鍵值對的形式設定(建立)值棧stack:<br> <s:property value="username"/> <br>
就可以在jsp頁面中看到 name2
================================================================================================================================================================
二、向值棧中存放物件
action:
/** * 二、儲存物件 * 1、宣告user * 2、建立getUser方法 * 3、設定user例項的屬性值 * 建立user例項的時候就已經放進了值棧中 */ User user; public User getUser() { return user; } public String ognl2(){ user=new User(); user.setUsername("張三"); user.setPassword("123456"); return "ognl2"; }
jsp:
向值棧中存放物件並顯示:<br> <s:property value="user.username"/><br> <s:property value="user.password"/>
================================================================================================================================================================
三、值棧中存放list集合
action:
/** * 三、值棧中存放list集合 */ //獲得user和list例項 User user1=new User(); User user2=new User(); User user3=new User(); ArrayList<User> list=new ArrayList<User>(); //獲得get方法 public User getUser1() { return user1; } public User getUser2() { return user2; } public User getUser3() { return user3; } public ArrayList<User> getList() { return list; } public String ognl3(){ //設定user的值 user1.setUsername("name1"); user1.setPassword("pwd1"); user2.setUsername("name2"); user2.setPassword("pwd2"); user3.setUsername("name3"); user3.setPassword("pwd3"); //user加入list集合 list.add(user1); list.add(user2); list.add(user3); return "ognl3"; }
jsp:
向值棧中存放list:<br> <s:property value="list[0].username"/><br> <s:property value="list[0].password"/><br> list遍歷list取值<!-- 遍歷list方式取值 --> <s:iterator value="list" > <s:property value="username"/> <s:property value="password"/><br> </s:iterator>
%使用
1 在struts2標籤中表單標籤 (1)在struts2標籤裡面使用ognl表示式,如果直接在struts2表單標籤裡面使用ognl表示式不識別,只有%之後才會識別。 |