struts2中的if/else,iterator標籤以及ognl簡單使用
阿新 • • 發佈:2019-02-15
原文地址http://tudou721.iteye.com/blog/301162
現在在頁面上判斷 顯示兩張圖片 資料庫中有圖片就顯示指定路徑下的該圖片,沒有就顯示預設圖片,如下程式碼:
1.這裡的personInfo是action中一物件,pic是personInfo一屬性,所以無須用#,%{}之類的東西,只需像獲取一個值一樣,直接使用它的物件.屬性,進行判斷是否為空值。Java程式碼
-
<s:if test="null==personInfo.pic||personInfo.pic.isEmpty"> <img width="100"
- <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,很快會用它也不是難事