xDoclet是一種通過讀取JAVA源文件中的特定標簽,然后生成指定文件的工具。xDoclet標簽本身已經提供了一些常用的標簽,例如@ejb,@hibernate,@web等等,但是仍然不能滿足我們的需求。
例如我們最新的項目中引用了一個javascript驗證框架,通過配置特定的xml配置文件,即可完成客戶端表單驗證,但是不想開發人員再去學習一套框架,于是想讓開發人員在源代碼中寫@javascript這樣的標簽,然后生成其配置文件。
javascript客戶端驗證一直是web開發中一個比較頭疼的問題,經常是每一個頁面中充斥著許多類似甚至相同的驗證代碼,如何統一有效的管理這些代碼,以及如何做到代碼頁面的分離一直沒有太好的解決方法。
運用這個驗證框架那么客戶端開發就變成了配置validation-config.xml這個文件如此輕松了,本文并不打算詳細講述如何使用JSValidation框架,有興趣的朋友可以去http://www.cosoft.org.cn/projects/jsvalidation JSValidation的官方網站自己去學習。
雖然運用這框架已經可以很好的完成客戶端驗證代碼的編寫,并且提供了dtd文件進行xml文件的,但是手動編寫xml文件還是很容易出錯,效率比較低,而且新的開發人員還要掌握一個全新的框架,不宜于開發人員入門。
像Struts或JSF這樣的框架大都需要為表單寫一個類似FormBean的東西,以JSF為例,假如表單內有一文本框,那么對應的Page類或叫FormBean類就應有如下代碼:
<ccid_nobr>
</ccid_nobr>
如果可以利用xDoclet,那么,就可以自動生成JSValidation的配置文件了,而且還利于培訓新的開發人員,再加入ant task還可以形成每日構建。想象的代碼應該是下面這個樣子:
<ccid_nobr>
</ccid_nobr>
通過分析xDoclet自帶的一些標簽包,發現只需要提供三個文件即可實現自定義xDoclet標簽:一個繼承于XmlSubTask的類,一個繼承于DocletTask的類(用于ant),一個xdt的模板語言文件即可。
在XmlSubTask類中,首先,定義模板文件名:
private static String DEFAULT_TEMPLATE_FILE ="resources/validation-config.xdt";
定義dtd文件名:
private final static String DTD_FILE_NAME_20 ="resources/validation-config.dtd";
定義要生成的配置文件名:
private static String GENERATED_FILE_NAME = "validation-config.xml";
然后只需將三個文件組合起來既可,詳細代碼如下:
<ccid_nobr>
</ccid_nobr>
要想ant可以使用,只需要以下簡單的代碼:
<ccid_nobr>
</ccid_nobr>
在ant中按如下方式定義:
<ccid_nobr>
</ccid_nobr>
接下來,也是最核心的部分,就是有關xdt模板語言,xdt文件可以說是自定義xDoclet標簽的最重要的文件之一,以javascriptxDoclet為例,簡單介紹一下xdt模板語言:
<ccid_nobr>
</ccid_nobr>
更多的模板語言,參考xDoclet的.XDT文檔,都是很好理解的模板語言。
接下來,開始自定義自己的標簽,新建一個xtags.xml文件,加上開頭
<ccid_nobr>
</ccid_nobr>
然后寫下所有自定義的標簽,例如:
<ccid_nobr>
</ccid_nobr>
注意幾個地方:
<ccid_nobr>
</ccid_nobr>
最后就是將這些文件打成jar,其放置目錄分別是:
根目錄
|
|--META-INF/xtags.xml
|
|--源代碼
|----|
|----|--resources/*.xdt,*.dtd
例如我們最新的項目中引用了一個javascript驗證框架,通過配置特定的xml配置文件,即可完成客戶端表單驗證,但是不想開發人員再去學習一套框架,于是想讓開發人員在源代碼中寫@javascript這樣的標簽,然后生成其配置文件。
javascript客戶端驗證一直是web開發中一個比較頭疼的問題,經常是每一個頁面中充斥著許多類似甚至相同的驗證代碼,如何統一有效的管理這些代碼,以及如何做到代碼頁面的分離一直沒有太好的解決方法。
運用這個驗證框架那么客戶端開發就變成了配置validation-config.xml這個文件如此輕松了,本文并不打算詳細講述如何使用JSValidation框架,有興趣的朋友可以去http://www.cosoft.org.cn/projects/jsvalidation JSValidation的官方網站自己去學習。
雖然運用這框架已經可以很好的完成客戶端驗證代碼的編寫,并且提供了dtd文件進行xml文件的,但是手動編寫xml文件還是很容易出錯,效率比較低,而且新的開發人員還要掌握一個全新的框架,不宜于開發人員入門。
像Struts或JSF這樣的框架大都需要為表單寫一個類似FormBean的東西,以JSF為例,假如表單內有一文本框,那么對應的Page類或叫FormBean類就應有如下代碼:
<ccid_nobr>
<ccid_code>private HtmlInputText txtUsername = new HtmlInputText(); |
</ccid_nobr>
如果可以利用xDoclet,那么,就可以自動生成JSValidation的配置文件了,而且還利于培訓新的開發人員,再加入ant task還可以形成每日構建。想象的代碼應該是下面這個樣子:
<ccid_nobr>
<ccid_code>/** |
</ccid_nobr>
通過分析xDoclet自帶的一些標簽包,發現只需要提供三個文件即可實現自定義xDoclet標簽:一個繼承于XmlSubTask的類,一個繼承于DocletTask的類(用于ant),一個xdt的模板語言文件即可。
在XmlSubTask類中,首先,定義模板文件名:
private static String DEFAULT_TEMPLATE_FILE ="resources/validation-config.xdt";
定義dtd文件名:
private final static String DTD_FILE_NAME_20 ="resources/validation-config.dtd";
定義要生成的配置文件名:
private static String GENERATED_FILE_NAME = "validation-config.xml";
然后只需將三個文件組合起來既可,詳細代碼如下:
<ccid_nobr>
<ccid_code>public javascriptSubTask() |
</ccid_nobr>
要想ant可以使用,只需要以下簡單的代碼:
<ccid_nobr>
<ccid_code>/* |
</ccid_nobr>
在ant中按如下方式定義:
<ccid_nobr>
<ccid_code><target name="javascript" depends="jxdoc_init" |
</ccid_nobr>
接下來,也是最核心的部分,就是有關xdt模板語言,xdt文件可以說是自定義xDoclet標簽的最重要的文件之一,以javascriptxDoclet為例,簡單介紹一下xdt模板語言:
<ccid_nobr>
<ccid_code><XDtClass:forAllClasses> 遍歷所有含有標簽的類(在ant中指定) |
</ccid_nobr>
更多的模板語言,參考xDoclet的.XDT文檔,都是很好理解的模板語言。
接下來,開始自定義自己的標簽,新建一個xtags.xml文件,加上開頭
<ccid_nobr>
<ccid_code><?xml version="1.0" encoding="UTF-8"?> |
</ccid_nobr>
然后寫下所有自定義的標簽,例如:
<ccid_nobr>
<ccid_code><xdoclet> |
</ccid_nobr>
注意幾個地方:
<ccid_nobr>
<ccid_code>“<level> method </level>”代表該標簽出現在方法上而不是類之上。例如 |
</ccid_nobr>
最后就是將這些文件打成jar,其放置目錄分別是:
根目錄
|
|--META-INF/xtags.xml
|
|--源代碼
|----|
|----|--resources/*.xdt,*.dtd