struts2 是支援 velocity 的,所以不需要什麼大規模更改.大多就是測試的時候按提示新增缺少的 class.這裡讓它支援 velocity 的布局功能
首先在專案中新建個類,路徑如下.這個類改寫了 struts2 裡的 velocity 類
web-inf下新建個檔案.命名:velocity.properties,內容如下(當然可以自己再加別的),用來存放velocity相關的一些資訊:
tools.view.servlet.layout.directory =/template/
tools.view.servlet.layout.default.template=de****t.vm
input.encoding=utf-8
output.encoding=utf-8
tools.view.servlet.layout.directory =/template/ 這行假定所有的 .vm 模板檔案都在根目錄的
/template 資料夾下,下面的login.vm和blank.vm 都是在這個目錄下.
接著配置 struts.xml,在 struts 根節點下加入:
還是 struts.xml 下面這個配置用來輸出,注意黑體 :
/template/login.vm
這個是 login.vm 的**#set($layout = "blank.vm") 用來設定布局模板.
#set($layout = "blank.vm")
這個是 blank.vm 的**$ 就是要替換成 login.vm 的內容
$
執行測試...
注,struts2.velocity.velocitylayoutresult 這個類是google來的.當時忘了記源位址.對原作者表示感謝...
我修改的原版的其中幾行.用來設定模板路徑這些問題.畢竟有可能不是所有的 vm 檔案都一定在 velocity.properties 指定的目錄下.
當路徑 @/ 開頭時,如:#set($layout = "@/other/layout/blank.vm") 表示這路徑是從根目錄開始.無視 velocity.properties 的路徑配置.
在當前專案配置中假如:
#set($layout = "@/other/layout/blank.vm") == /other/layout/blank.vm
#set($layout = "other/layout/blank.vm") == /template/other/layout/blank.vm
在action 中設定 request.setattribute("layoutdir", "/abc/") ,可以指定result 裡vm的路徑.無視 velocity.properties 的路徑配置,注意這個是僅這個 action 的輸出結果會換路徑,其它action不受影響 .
在當前專案配置中假如:
#set($layout = "@/other/layout/blank.vm") == /other/layout/blank.vm
#set($layout = "other/layout/blank.vm") == /abc/other/layout/blank.vm
spring對struts2支援問題
存在不如意的地方就意味著存在bug。當我們像擺弄機器一般去利用這個那個框架的時候,很快,就陷入無休止的試驗,試驗這個那個的功能。創新簡直和我們絕緣。隨便抱怨一句。最近,公司同事利用spring struts2做個工具,涉及到隱私,故我把 簡單化 普世的原則啊 public class loginac...
struts2 支援的結果型別
在中的type配置 預設是dispatcher對應jsp頁面 chain action鏈式處理的結果型別 freemarker 指定使用freemarker膜拜作為結果 的結果型別 httpheader 用於控制特殊的http行為的結果型別 redirect 用於直接跳轉到其他url的結果型別 re...
Struts2支援表單多物件提交
struts2對集合型別的轉換提供了很好的支援,你可以用集合物件來儲存表單提交的資料,這對提交多個相同類別的資訊將非常有用 1 物件中宣告屬性objectlist action中宣告list 2 頁面迴圈list list objectlist as object assign index obje...