1. 程式人生 > >用OGNL表示式取值棧中的值

用OGNL表示式取值棧中的值

首先,簡單介紹一下Struts2標籤

使用Struts2標籤,需要先在頁面中引入Struts2標籤庫:

<%@ taglib prefix="s" uri="/struts-tags" %>
標籤庫的位置在struts2-core-2.3.1.2.jar包中的META-INF/struts-tags.tld

______________________________________________________________________________________________

<s:debug/>標籤是一個超連結,其作用可以顯示出值棧的內容,可用於除錯。

______________________________________________________________________________________________

用OGNL表示式顯示值棧中的資料的時候:

  • 如果要訪問物件棧中的值,直接訪問屬性即可。
  • 如果要訪問Map棧中的值,需要加#。
______________________________________________________________________________________________ <s:propertory/>是一個輸出標籤: 說明:如果不寫value屬性,則直接輸出棧頂元素。 ______________________________________________________________________________________________ 下面列舉了一些將資料存放在值棧中的不同域中,在前臺獲取的方法: 物件棧:
放在棧頂:
ActionContext.getContext().getValueStack().push("aaaaaa");
獲取方式:
<s:property/>
將物件放到棧頂:
<span style="white-space:pre">	</span>Person person = new Person();
	person.setName("張三");
	person.setAge(1);
	ActionContext.getContext().getValueStack().push(person);
獲取方式:
<s:property value="name"/>
補充:如果在物件棧中出現相同的元素,則會從上往下找,直到找到就停止了。 Map棧: 放到request域中:
ServletActionContext.getRequest().setAttribute("as_request", "as_request");
獲取方式:
<s:property value="#request.as_request"/>
將物件放到request域中:
<span style="white-space:pre">	</span>Person person = new Person();
	person.setName("張三");
	person.setAge(23);
	ServletActionContext.getRequest().setAttribute("person", person);
獲取方式:
<span style="white-space:pre">	</span><s:property value="#request.person.name"/>
<span style="white-space:pre">	</span><s:property value="#request.person.age"/>
取parameter域中的值:
<s:property value="#parameters.id[0]"/>
查詢各個域中的值:
<s:property value="#attr.a_app"/>
attr會按照request>session>application的順序查詢屬性,直到找到為止。
__________________________________________________________________________________________ OGNL表示式: OGNL表示式(Object-Graph Navigation Language)是物件影象化導航語言。 OGNL表示式有一下特點:
  • 支援物件方法呼叫:objName.methodName();
  • 支援類靜態的方法呼叫和值訪問

@[類全名(包括包路經)]
@[方法名 | 值名]
例如:
@[email protected]('foo%s','bar')
@[email protected]_NAME;

  • 支援賦值操作和表示式串聯,例如:
price=100, discount=0.8, calculatePrice(),這個表示式會返回80;
  • 訪問OGNL上下文(OGNL context)和ActionContext
  • 操作集合物件
說明OGNL中幾個符號的含義: %的的用途是將字串當成OGNL表示式解析。 $符號主要有兩個用途: 用於在國際化配置檔案中應用OGNL表示式 用於在struts配置檔案引用OGNL表示式

相關推薦

OGNL表示式

首先,簡單介紹一下Struts2標籤 使用Struts2標籤,需要先在頁面中引入Struts2標籤庫: <%@ taglib prefix="s" uri="/struts-tags" %>標籤庫的位置在struts2-core-2.3.1.2.jar包中的M

ognl表示式集合的陣列迴圈和頁面普通

普通取值 取第一列的值 list<object[]> <s:property value="#request.list[0]" ></s:property> <s:property value="#request.list[1]" >&

Struts2_day03---OGNL存、資料

一、OGNL(Object-Graph Navigation Language) OGNL是一種功能更加強的表示式語言。 理解:類似於EL表示式。EL應用在jsp中,OGNL多用在struts2中。

EL表示式為什麼可以在

樓主這個問題,為什麼用el取request範圍的東西會同樣取到值棧的內容呢.這個問題就要結合struts2的原始碼來說了,我們知道request在javaee裡面是HttpServletRequest它是一個接口裡面的一切包裝都是通過javax.servlet.http.HttpServletRequestW

jspel表示式獲取後臺傳來的,或者獲取session

<script type="text/javascript"> var usernameC = ${sessionScope.SESSION_USER_PROFILE.accountId}; var caseId = "${caseId}"; var taskId =

struts框架問題七之EL表示式也會獲取到的資料

7. 問題七:為什麼EL也能訪問值棧中的資料? * StrutsPreparedAndExecuteFilter的doFilter程式碼中 request = prepare.wrapRequest(request); > 對Request物件進行了包裝 ,StrutsR

jsp頁面el表示式屬性的原理${bean.field}

EL表示式獲取物件屬性的原理是這樣的:以表示式${user.name}為例EL表示式會根據name去User類裡尋找這個name的get方法,此時會自動把name首字母大寫並加上get字首,一旦找到與之匹配的方法,El表示式就會認為這就是要訪問的屬性,並返回屬性的值。 所以

在jQUery,或向session域

當Action中已經向值棧中設值後,如何在jQuery中拿到值棧中的值? 比如:Action中已經向值棧放了一個數據,為 username=“張三” 那麼,在jQuery中就可以這樣做: var name ='${username}' 這樣,就能拿到“張三”這個值了。 更

bootstrap table使用:前端分頁,獲取的json,載入到table,獲取選中的行資訊

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ include file="/common/taglibs.jsp" %> <!DOCTYPE html> <html

struts框架問題五之向儲存資料

5. 問題五: 向值棧儲存資料 (主要針對root棧) > valueStack.push(Object obj); * push方法的底層呼叫root物件的push方法(把元素新增到0位置) > valueStack.set(String key, Object

struts框架問題六之從獲取

  6. 問題六: 在JSP中獲取值棧的資料 * 總結幾個小問題: > 訪問root中資料 不需要# > 訪問context其它物件資料 加 # > 如果向root中存入物件的話,優先使用push方法。 > 如果向

struts框架問題七之EL表達式也會獲取到的數據

getattr bject style 包裝 red 過濾 t對象 color request對象 7. 問題七:為什麽EL也能訪問值棧中的數據? * StrutsPreparedAndExecuteFilter的doFilter代碼中 request = prep

詳解如何在jsp頁面獲取的資料

從值棧中獲取資料 使用struts2的標籤中+ognl表示式獲取值棧資料 使用方式:<s:property value=”ognl表示式” /> (1)獲取字串 ·向值棧放字串   ·在jsp中使用struts2標籤+ognl表示式獲取   顯示: (2)獲取

js獲取servlet的+OgnlValueStack

利用指令碼獲取傳入值: 在struts2中action傳遞給jsp中的資料是儲存在OgnlValueStack中的,所以在jsp頁面中如果想利用指令碼而不是sturts標籤獲取傳入值的話,儘量

struts2ognl 獲取不到,引數名一樣

public class QuestionAnswer { private Long aNum; private Long bNum;private Long cNum;private Long dNum;public Long getaNum() {return aNu

正則表示式括號內的 按第一個空格分割字串

<pre name="code" class="csharp"> Regex reg = new Regex(@"\((.*)\)"); string a = "張三(Zhang san)"; Match m = r

python爬知乎的圖片

首先,我們檢視一下知乎的robots協議。 User-agent: * Disallow: / 知乎是不允許爬取其根目錄的。 但是,我們只是用於實驗,而且訪問頻率和正常訪問差距不大,所以可以爬取。 先明確目的: 對手動輸入的網址進行解析 把爬取到的圖片儲存到指定目

使用S標籤配合OGNL表示式的session時的一點問題!

最近碰到的一種情況: 需要在頁面獲取session值當作一個JS引數,於是就在JS中寫了這般程式碼 var a = <s:porperty value="#session.xx"/> 然而事實上在頁面上並沒有獲取這個引數,檢查發現是session沒有取得。 並且

Struts2EL表示式順序及OGNL表示式順序

好記性不如賴筆頭………… 正常EL的查詢域為:page(PageContext)–>request–>session–>application Struts2中EL的查詢域為:pa

【Struts2(三)】OGNL表示式

1.2 相關知識點 1.2.1 什麼是OGNL OGNL:物件圖導航語言,比EL表示式強大很多倍的語言。       EL:從域物件中獲取資料,從EL的11個物件中獲取。${name}${pageContextPath}   &nbs