2011年10月19日 星期三

GWT 專案裡面的package

最近在開發GWT專案,遇到一個問題
明明我已經把library import進來的,但是為什麼eclipse卻提示說找不到library 的source
我一共寫了兩個class 其中一個沒問題
後來終於找到原因
就是因為package的關係
在GWT專案中package是有預設關係的
但這也是因為我文件還有GWT沒有看仔細所造成的
預設GWT專案裡面會有client 跟server還有share的package
而放在client裡面的class最後都會編譯成javascript
所以如果你今天import library無法被編譯成javascript , 那eclipse就會報錯
以上這個我知道
但是我沒注意到share package這個部份
因為我想寫的東西是一個tool 我就想說放在share就好
結果就出問題了
share裡面的東西同時會編譯成javascript跟 .class所以一樣不能import無法被轉成javascript的library
所以裡面盡量只放GWT提供的class 或是簡單的資料結構

如果你的電腦夠慢的話,你會發現當你寫完code存檔完一開始是不會出現錯誤
因為他會先編譯成class
但是大概過了一陣子,你就會見鬼似的看到錯誤訊息
這就是因為他要編譯成javascript的時候出錯了
但是你無法從eclpise提供的訊息當中知道

2011年10月17日 星期一

dom4j - java上的xml parser library

最近工作上在用GWT寫網頁
需要寫一個api給client使用並且回傳的東西是xml
原本GWT還有java就有內建很多可以使用
但後來找到一個聽說效能好而且比較不會吃記憶體的工具
那就是dom4j


官網位置:
http://dom4j.sourceforge.net/


用起來大同小異
因為我也只用到產生Element還有搜尋xpath而已



一開始使用上有點不習慣
之前寫c sharp的時後所謂的document已經是已包含了root這個根節點,所以通常不用指定root
但在dom4j裡面document只是代表整份文件裡面除了表頭什麼都沒有
所以你必須自己產生root的根元素, 使用狀況如下


Document document = DocumentHelper.createDocument();
Element rootElement = document.addElement("root"); 


下面是我的其中一個function 這個主要目的是要取得某個節點
如果這個節點不在的話,就自己產生一個
private Element getBookElement(Element rootElemt, String bookid)
{
 Element bookElement = (Element) rootElemt.selectSingleNode("book[@id='"+bookid+"']");
 if(null ==bookElement)
 {
 bookElement = rootElemt.addElement("book");
 bookElement.addAttribute("id", bookid);
 }
 return bookElement;
}

回來了

歷經了三年多
雖然去年還有在這裡發表文章
但是那都是來打打工作上的廣告
感覺上一直都沒有好好的把一個地方經營好
生活上瑣事太多也只是藉口而已
之前工作上學到很多東西,也嚐試了很多
但是都沒有留下來,感覺很可惜
有時間我會在慢慢補上去的