struts2 井號,星號,百分號

struts2 井號,星號,百分號

「#」主要有三種用途:

1. 訪問OGNL上下文和Action上下文,#至關於ActionContext.getContext();能夠訪問這幾個ActionContext中的屬性: 

parameters
#parameters.id[0]做用至關於request.getParameter("id")
request
#request.userName至關於request.getAttribute("userName")
session
#session.userName至關於session.getAttribute("userName")
application
#application.userName至關於application.getAttribute("userName")
attr按request > session > application順序
#attr.userName至關於按順序在以上三個scope內讀取屬性,直到找到爲止

Html代碼    收藏代碼
  1. <select id="rolelist" name="filter_EQL_dept.id" style="width: 150px;" class="input2">  
  2.       <option value="">--請選擇--</option>  
  3.    <s:iterator value="listDepts">  
  4.       <option value="<s:property value='id'/>"  
  5. <s:property value='#parameters["filter_EQL_dept.id"][0] == id ? "selected":""'/>>  
  6.          <s:property value='deptname'/>  
  7.       </option>  
  8. </s:iterator>  
  9. </select>  


2. 用於過濾和投影(projecting)集合,如books.{?#this.price<100};  

3. 構造Map,如#{'foo1':'bar1', 'foo2':'bar2'},在select和radio標籤中常常用到。 


「%」的用途是在標誌的屬性爲字符串類型時,計算OGNL表達式的值


Html代碼    收藏代碼
  1. <s:url value="%{#foobar['foo1']}" />  




「$」有兩個主要的用途

1. 用於在國際化資源文件中,引用OGNL表達式。 
2. EL表達式 ${sessionScope.user.sex}等於${sessionScope.user["sex"]} 
   同樣的,若是是${username}沒有指定scope那麼查找順序是Page---Request---Session---Application 
3. 在Struts 2配置文件中,引用OGNL表達式,如:
 

Html代碼    收藏代碼
  1. <action name="downloadCaseFile" class="com.business.action.DownloadFileAction">  
  2.    <result type="stream">  
  3.       <param name="contentType">${contentType}</param>  
  4.       <param name="contentLength">${contentLength}</param>  
  5.       <param name="contentDisposition">attachment;filename="${filename}"</param>  
  6.       <param name="inputName">fileStream</param>  
  7.       <param name="bufferSize">4096</param>  
  8.    </result>  
  9. </action>  
相關文章
相關標籤/搜索