在appfuse構(gòu)建的項目中集成velocity的步驟和碰到的問題
使用Velocity無非也就是為了能夠真正的實現(xiàn)mvc分層,使得各個團隊成員(美工,程序員)可以各盡所長。
在appfuse構(gòu)建的項目中集成velocity的步驟和碰到的問題 :
1:修改web.xml使得項目支持velocity
(1)定義名為velocity的servlet:


















(2)定義對應(yīng)velocity的servlet-mapping:




(3)將velocity納入到編碼過濾的filter(一般都已經(jīng)定義經(jīng)典SetCharacterEncoding):





































3:在項目的build/web/classes文件夾中創(chuàng)建并編輯文件velocity.properties,通常的內(nèi)容:



---以上三步其實就是普通java web項目集成velocity的必須要做的工作了。
---下面是使用appfuse中的appgen生成velocity代碼的要做的工作,這里只做了從table出發(fā)的生成過程。
4:在項目中extras/appgen/src中創(chuàng)建模板,這里假設(shè)創(chuàng)建的兩個文件是List_vm.xdt和Form_vm.xdt
模板的具體內(nèi)容就要結(jié)合xdoclet,velocity和html來編寫,不是一個簡單的工作!
5:編輯extras/appgen下的build.xml文件,使得在使用ant install-detailed的時候能生成數(shù)據(jù)表對應(yīng)的vm文件.
(1):在名為gen的target中添加template,原文件有以下的代碼:




















這里,templateFile里指定模板文件,destinationFile指定生成的臨時文件。
(2):在名字同樣為gen的target中添加move任務(wù),原文件中有以下代碼:





我們要在這個后面添加以下代碼(如果不使用jsp作為view層可以使用替換的方式把原文件的這部分內(nèi)容處理掉):





這樣生成的臨時文件就會被重命名(有點懷疑這樣做的必要性,暫且先這樣做吧)。
(3):在名為merge-common的target中添加copy任務(wù),原文件中有如下代碼





我們要在這個后面添加以下代碼(如果不使用jsp作為view層可以使用替換的方式把原文件的這部分內(nèi)容處理掉):





這樣在使用ant install-detailed命令時就會把生成的文件復(fù)制到項目的web/vms文件夾下了。
7:修改項目的根目錄下的build.xml:
(1)修改名為copy-web-files的target,使得運行ant deploy時可以將vm文件復(fù)制到部署項目的WEB-INFO文件夾下(放在WEB-INF下是為了防止直接訪問 )。
參考的源代碼:









可以在這個任務(wù)后面添加一個任務(wù):



另外,如果不再使用jsp做為view層可以把匹配jsp的fileset節(jié)點去掉,這樣就不會復(fù)制多余的文件到部署的項目中了。
(2)同名的target 中修改另外一個copy任務(wù)(順數(shù)第二個),源代碼:








在fileset中添加一個節(jié)點:








Let life be beautiful like summer flowers and death like autumn leaves.