跳到主要內容

發表文章

目前顯示的是 2010的文章

java.util.Date存到datetime欄位會遺失時間資訊

使用Hibernate , SQL Server 2008將 Date存到datetime欄位中會遺失時間資訊,只剩下日期。如下:          2010-11-02 00:00:00.000 原有設定: bean-hbm.xml                             需使用sql-type 來複寫Hibernate default mapping。 The sql-type attribute allows the user to override the default mapping of a Hibernate type to SQL datatype. (hibernate reference 3.3.2 GA)                            

引用struts2後無法啟動application server

2010/10/14 下午 04:45:03 org.apache.catalina.core.StandardContext filterStart 嚴重的: Exception starting filter struts2 Unable to load bean: type:com.opensymphony.xwork2.util.ValueStackFactory class:com.opensymphony.xwork2.ognl.OgnlValueStackFactory - bean - jar:file:/D:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/epza/WEB-INF/lib/struts2-core-2.1.8.1.jar!/struts-default.xml:70:140     at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:431)     at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:190)     at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)     at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)     at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)     at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3800)     at org.apache.catalina.core.Standa...

NSIS 啟動 Log功能

NSIS 啟動 Log功能 標準版本的NSIS安裝好之後,編譯時並無法使用以下指令 LogSet yes 編譯時會產生錯誤訊息,指出Log功能並沒有打開。 如閱讀文件會告訴你要將Log功能開啟後,重新build NSIS,對不熟悉的人是很麻煩。 此時其實可以去下載NSIS special builds,就有一個是已經啟動Log的,下載解壓後覆蓋掉原本NSIS的安裝目錄即可。

ZK - open source Ajax Framework介紹

ZK介紹 數年前因 IThome的報導 就有注意到ZK,以framework作為產品的台灣公司,真的是非常少見,而ZK的表現也是令人激賞。 除了ZK 這個主軸的framework以外,其相關的產品也很全面,介紹部份如下: ZK studio 一個eclipse plugin,用來加速ZK開發的工具。內含一些簡化開發過程的工具如: ZUL Visual Editor, 可以預覽zul所設計的UI在瀏覽器上顯示的樣子,方便設計UI。 Properties, 點選某個zul中的UI元件,即會顯示該元件的所有可設定的properties。 ZUL Palette, 元件調色盤,可以將UI元件用拖拉的方式放至zul文件中。 ZK JSP tag 將zk的元件整合至jsp中,若不想完全改寫既有jsp頁面,可以採用此一選擇,可以立即獲得Ajax的特性。 ZK Spreadsheet 類似Google docs中試算表的元件 ZK calendar 類似Google calendar的元件 ZK線上展示 ,直接以畫面示範所有元件的用法與外觀,你可以手動修改原始碼並立即觀看修改後的結果,很棒的一個作法。 優點 快速擁有Ajax效果 對JavaEE工程師來說,在不換平台的情況下(Flex, Silverlight)要做出RIA,擁有的選擇不多,直接透過Javascript使用AJAX或採用Ajax相關的library(Jquery,DWR)需要一段時間學習, RichFaces 也可能是個選擇,但JSF似乎不是很多人採用,對於JavaEE工程師來說,可以透過學習成本不高的ZK來快速打造RIA。 支援MVC架構 zul配合ZK composer(Controller),可以使zul頁面純粹擔任View的角色,完全不需寫程式碼在頁面上,作到清楚的MVC切分。 composer更可對頁面UI進行動態新增、刪減或修改屬性之變化,皆透過zK ajax engine來完成。 可純粹以Java開發 雖然ZK 5已讓懂javascript的人作前後端整合開發,甚至支援其他的script語言,但是幾乎所有既有元件功能都仍然可以透過Java控制。 Component-based, Event-Driven UI畫面以UI元件為基礎配置,也可以某個程度的客製化元件...

Java 執行檔(exe)路徑問題

要讀取應用程式下相對目錄的檔案,要瞭解java File解析相對路徑的方式。 JavaDoc java.io.File中提到 A pathname, whether abstract or in string form, may be either absolute or relative . ...resolve relative pathnames against the current user directory. This directory is named by the system property user.dir , and is typically the directory in which the Java virtual machine was invoked. 路徑可以是「相對」或「絕對」,相對路徑依照目前使用者的所在目錄,也就是JM被啟動的目錄。 在eclipse中,啟動的目錄是project根目錄,例如: myProject下執行"run as Java Application" current user directory就是 [workspace目錄]\myProject 如果用JSmooth之類的custom launcher工具封裝成exe後,current user directory就是exe所存在的目錄。 建立成捷徑後,則current user directory會以捷徑內容中「開始位置」為準,所以如果「開始位置」與exe存放位置相同的時候,則與直接雙擊exe執行的current user directory相同。 但若以bat執行,則current use directory會以bat所在目錄為準。 例如一個bat檔如下 d:\filePath.exe pause 若filePath會建一個新檔在current user directory,若bat放在桌面,則該新檔會建立在桌面,而不是exe檔所在位置。 但透過JSmooth設定可以改變此情形。 勾選"Set the executable folder as current directory of application"之後,無論bat檔在什麼位置,都以exe檔的所在位...

準姊姊的樣子

亮亮活潑又愛管東管西,連他爸爸都敢管,我們都相信以後一定會把弟弟妹妹管得死死的,只是沒想到老二還沒出生我們就已經隱約看到她做姊姊的樣子了。 昨天晚上亮亮媽躺在床上休息時,感覺到胎動,說了一句:「圈圈在踢我」。 亮亮立刻在旁邊大聲說:「不准踢媽媽!」,讓我跟亮亮媽都嚇了一大跳,沒想到老二還沒出生就已經開始被「管」囉。 真是管得太早了吧!

ZK整合Hibernate, Spring的lazy loading問題簡單解法

ZK是個好學易用的component-based, event-driven AJAX framework,可以只用Java語法開發,而擁有AJAX的技術達成的更新部份網頁效果。 Hibernate用在web-based application時,在view layer會有眾所周知的lazy loading problem,如果使用JSP等會發出HTTP request的前端技術,可以透過OpenSessionInViewFilter來解決這個問題。 不過,如果使用AJAX技術時,網頁畫面的更新通常不會發出HTTP request,因此上述解法將無法用在ZK這樣的AJAX framework中。 典型的master-detail情況是,在ZK的元件中,點選listbox中一筆紀錄(master),要顯示該筆資料的詳細資料欄位(detail),例如點了一筆員工姓名,要顯示員工詳細資料。但是這些詳細資料中,有些欄位或集合是在hibernate中設定為lazy initialization的,也就是在抓出listbox中的簡要資料時,沒有被hibernate載入的。 這時hibernate會透過model物件中附帶的Session物件去做再次查詢,如果該Session已經關閉則會拋出lazy initialization exception。 有一種作法稱為Long Session,也就是開啟一個session直到應用程式結束才關閉。 我的解法比較適用在DAO層採用 繼承Spring的 HibernateDAOSupport的架構,他的特性是CRUD的method多半用 HibernateTemplate來實做各類查詢。這樣的架構Session會在HibernateTemplate 中開啟、關閉,也就是查詢結束後Session就關閉了。如果採用這樣的架構,Long Session的解法跟此架構格格不入,ZK所提供的OpenSessionInViewListener也跟這樣的架構無法共同運作,因為DAO層與OpenSessionInViewListener不是使用同一個Session。 所以我的解法是在頁面點選一筆資料的同時,先initialize該筆的lazy-loaded collection,樣本程式碼如下: public void initializeProxy(E...

SAP自我學習資源

SAP Training : Guide to Free SAP Study Material http://www.youtube.com/watch?v=6GQeHnbT1k4