1. 程式人生 > >struts2中的if/else,iterator標籤以及ognl簡單使用

struts2中的if/else,iterator標籤以及ognl簡單使用

原文地址http://tudou721.iteye.com/blog/301162

現在在頁面上判斷 顯示兩張圖片 資料庫中有圖片就顯示指定路徑下的該圖片,沒有就顯示預設圖片,如下程式碼: 

1.這裡的personInfo是action中一物件,pic是personInfo一屬性,所以無須用#,%{}之類的東西,只需像獲取一個值一樣,直接使用它的物件.屬性,進行判斷是否為空值。 

Java程式碼  收藏程式碼
  1. <s:if test="null==personInfo.pic||personInfo.pic.isEmpty">                        <img width="100"
     height="120" alt="您的照片" src='../../image/zwpt.gif'/>                         
  2. <s:if><s:else>                          <IMG width="100" height="120" alt="您的照片" src='../../UploadImages/<s:property value="personInfo.pic"/>'/></s:else>  

2.假如personInfo是頁面中的屬性欄位 如:<s:iterator id="personInfo" value="list"></s:iterator>那麼判斷條件就不能像上面那樣寫,必須在personInfo前面加上'#',標籤才會識別出這個變數,相應的%{}也要起作用了;這裡的list也必須是action中具有get方法的一個屬性

3.如果list是session或request中的物件,則須這樣寫:<s:iterator id="personInfo" value="#request/session.list"/> 

再如:<s:iterator value="name,url"/> 這是兩個String屬性 
輸出name<s:property value="name"/> 
輸出url<s:url value=%{url}"/>這裡是將url轉為絕對路徑。 

若user是request中的一個物件 則要在textfield中取出該值: 
<s:textfield name="user" value="%{#request.user}/> 

直接輸出值:<s:property value="#request.user}/> 

說明:${}是EL語言的 %{}形式是ognl表示式語言的,在struts2的標籤內部,使用%{}這樣的形式,在標籤外部可以使用${}EL語言的方式。在struts2的標籤內部不允許使用${}這樣的形式。 
很多時候,我們使用struts2的一些標籤,屬性是需要接受集合的,如果集合是儲存在request,session,或者是值棧(非根物件的棧頂),可以使用#變數名的方式,如果獲取的值是在Action中通過特定的方法來獲取,就需要使用如 value="list"這樣的方式,只是去掉了前面的#。 

其實可以根據實際情況,試試不同樣式的寫法,然後總結出規律,即使沒學會ognl,很快會用它也不是難事