struts2中,<s:...>標籤#號問題
- 2022-10-15
我說一下我的理解
request裡的東西,都同時也放在了valueStack的頂層。
以前是request、response、context等這些是基本預設物件作為根值物件,在棧的頂層,你可以直接呼叫,比如request。什麼什麼。
現在Sturts2,頂層換了。比如你的request裡先前存了一個叫name的變數,那麼OGNL中,你這樣就可以:
這樣就取到值了。
如果是普通HTML標籤,這樣:
這樣取值。
我覺得它倆反過來就不好用,也不知道是不是我配置的問題。
那麼假如你需要用request或response了,實際上呼叫:
ServletActionContext。getRequest();或
ServletActionContext。getResponse();
現在OGNL用井號#代替了上面,即#request就可以取到了。
又比如你自己一個物件addr出來,那麼這個物件跟預設的那幾個物件,即request、response等等是在一個層次上的,對於以前的jsp,是可以直接呼叫到的,但Struts2不行了。所以: #addr 與 %{addr}或${addr} 是兩個東西,後者是request裡的,當然人為也可能讓它們都指同一個東西。
注意作用域,el吧表示式可以取到不代表# 可以直接取,el會逐個掃描各個作用域,但是 不會了,如果存在request中 就要 才可以 ,所以 注意看下你的值儲存的作用域 q群 320748591 歡迎加入討論
標籤很強大! 是獲取值棧裡的值並顯示 從值棧裡取值不用#, 從request, 或變數裡取值要用#
上一篇:宿遷酒桌上的甜湯叫什麼?
下一篇:飛機航空餐的包裝要求和標示要求