入門參考文章
http://www.ibm.com/developerworks/cn/java/j-lo-appfuse/index.html
將appfuse應用于pgsql的時候碰到的若干問題:
ant new之后在用eclipse打開項目會有五個錯誤--原因是.classpath文件里面聲明了五個src類型的文件夾
碰到的數據庫相關問題----原因在于使用的是pgsql
在建立的項目文件夾里ant setup的時候會出錯,原因在于數據庫的設置錯誤:
解決的方法:
將build.properties里面關于數據庫設置的內容釋放出來,并根據自己的需要修改各個key對應的value
另外:如果還引用database.name還要添加database.name=postgres這樣一個屬性,否則會報錯說database.name不存在
運行 ant test-all
會出現另外一個錯誤:role "test" doesn't exist.
解決的方法:
將properties.xml中的
<property name="database.username" value="test"/>
<property name="database.password" value="test"/>
改成
<property name="database.username" value="postgres"/>
<property name="database.password" value=""/>
再運行 ant test-all
在開啟tomcat的時候會出錯(如果tomcat設置和默認的不同)
默認的定義在properties.xml的這幾項設置
<property name="tomcat.server" value="localhost"/>
<property name="tomcat.manager.url" value="http://${tomcat.server}:${http.port}/manager"/>
<property name="tomcat.username" value="admin"/>
<property name="tomcat.password" value="admin"/>

只要將這幾項改成和真實的tomcat設置,下面是我的例子:
<property name="tomcat.server" value="localhost"/>
<property name="tomcat.manager.url" value="http://${tomcat.server}:8686/manager"/>
<property name="tomcat.username" value="admin"/>
<property name="tomcat.password" value=""/>
再次運行ant test-all,到最后還是會有錯,這是因為國際化文件的亂碼問題(中文),而且這個亂碼不是所有字符都亂碼
而是,只有個別文字亂碼--當然具體原因我也不知道,能做的就是按照上下文進行編輯了!
資源文件所在位置:web/WEB-INF/classes
在這里我使用的Properties Editor,比較方便(我可以提供一份已修改好的資源作為參考)!
<其實這里如果用ant deploy命令是可以啟動項目的啦,只是登陸頁面測試的結果和期待的結果用一樣>
另外切換到英文的時候也會找不到國際化的內容,反而裝載了中文的資源文件的內容;這里是因為
ApplicationResources_en.properties文件是空的,估計原因是在裝載資源文件的順序上的原因吧,
我發現ApplicationResources.properties并不是空的,原則上是不會去裝載中文的資源文件啊。
解決這個問題只要將ApplicationResources.properties的內容拷貝到ApplicationResources_en.properties
就可以了(這里有一種治標不治本的味道)。
在初生成版本的用戶列表里面也又亂碼的問題(中文的情況下),在表頭和表尾的地方!
這樣編輯另外一個文件:
displaytag_zh_cn.properties--路徑為web/WEB-INF/classes
切換到英文版的時候發現又裝載了中文的資源內容,檢查原來是缺失了這個文件:
displaytag_en.properties
創建一個文件并使用編輯之!
具體的內容可以參考
http://displaytag.sourceforge.net/configuration.html
現在在項目目錄下運行ant deploy然后訪問,就可以出現一個基本正常的期望站點了。
By the way:ant deploy命令有時候會出現tomcat使用cpu占用率非常高的現象(導致卡機),至少我自己就發生了幾次。:(
現在讓我們來嘗試一下新的工具:AppGen代碼生成:
創建數據表,生成代碼,關聯hibernate文件,這些都不累贅了,因為前面所說的入門文章里面都有說了,照做便是!
不過這里也出現了問題,在我們運行回到項目文件夾里ant deploy之后,去訪問剛生成的文件的添加頁面的時候,你會發現有問題。
No form found under 'mytablenameForm' in locale 'zh_CN'
解決這個問題有兩種方法:
(1)在build/yourapp/WEB-INF/pages/下找到你生成的文件中的form.jsp文件,去掉script標簽內的內容,并去除form的檢驗
(2)在build/yourapp/WEB-INF的validation.xml文件中加入你對應的那個form,當然這里需要至少檢查一個field!
選擇哪種方法依具體情況而定.
再運行ant deploy,在之前出錯的地方就不再出錯了!
關于新生成表的國際化:
AppGen生成代碼的時候只在 ApplicationResources.properties種添加了相關的元素
我們要做的工作就需要修改ApplicationResources_en.properties(直接拷貝)和
ApplicationResources_zh_CN.properties(拷貝并編輯)才能實現國際化
小小的總結一下:
Appfuse的優點:當然是快了,生成的代碼非常清晰,人工干預比較少,部署方便。
目前的現實:appfuse的模板(主要是在國際化方面)似乎本身還有有點問題,出現不少亂碼。
團隊的問題:使用ant,對程序員的要求比較高,特別是習慣了用可視化ide編程的程序員,對這種方式比較抵觸。
--后來我發現可以在AppFuse的目錄下(web/WEB_INF/classes)替換掉之前的原文件,在生成的件就不會亂碼了
哦啊啊啊啊--我打開解壓后appfuse一看,偶的神仙的,appfuse解壓之后就是一個eclipse項目----如果我之間去編輯解壓后的
appfuse,然后在用ant命令(或直接在eclipse用)生成項目,又會怎么樣呢?真又一種迫不及待要試一下的感覺!
Let life be beautiful like summer flowers and death like autumn leaves.