簡體   English   中英

#{} $ {}和%{}之間有什么區別?

[英]what's the difference between #{} ${} and %{}?

我目前正在使用struts2,我只是不明白${var}#{var}%{var}之間的差異是不同的范圍? 他們什么?

我找到了一個#的例子:

<s:select label="Year"
      id="%{param.name}"
      list="#{'2010':'2010','2011':'2011','2012':'2012','2013':'2013','2014':'2014', '2015':'2015'}"
      value="%{currentYear}"
      required="true"
/>

在這里,它看起來像是一個關聯數組,但有時我#var它看作#var (沒有括號)任何想法?

  • ${} - 標准JSP EL表示法。
  • #{} - 標准UEL表示法; 從未使用它,可能會工作。
  • %{} - OGNL表達式表示法。

JSP EL表示法的工作原理是因為有一個請求包裝器將首先按順序查找值堆棧,然后如果在值堆棧中找不到值,則返回到正常的JSP計算。

OGNL表達式表示法僅在S2標簽內有效。 IMO它應該在您評估OGNL表達式時使用,盡管它通常是可選的。 然而, 它是可選的時候有點像廢話。 經常是,buuuut並不總是如此。 最好使用它,並明確和溝通。

可能會問#變量,如#session#用於解析值棧這是在“地圖”部分上的值。 我將值堆棧視為組合堆棧和范圍:如果對象已被推入堆棧,則不需要# 如果已創建值,則需要#

例如,如果使用<s:set>創建變量,則必須使用#前綴訪問它,例如:

<s:set var="foo" value="'plugh'"/>
<s:property value="#foo"/>

只是另一個說明:

您可以在操作中使用$來請求struts在將其傳遞給其他方法之前根據OGNL評估您的參數,例如:

使用自定義驗證器

Struts 2 - 重用自定義表達式驗證器

要么

更改下載文件名

Struts 2 Download - 如何動態配置文件名?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM