原文地址:http://my249645546.iteye.com/blog/1856141
關於Freemarker,功能很強大,但好用的eclipse插件卻非常少。曾經用Jboss的那個插件,居然對Freemarker的部分標籤不兼容。比如${user??}編輯器居然報錯!後來發現了另一款插件:
hudson.freemarker_ide_0.9.14
這也是我目前正在使用的一款插件,個人感覺還不錯,關鍵字高亮顯示了,代碼提示也有了。只是這玩意兒在代碼提示上很不智能。比如:
1、在一個ftl文件中使用java對象時,不能提示出這個對象的屬性。如${user.name}。輸入user.後不會將name進行補全
2、在一個ftl文件中定義一個macro,另一個文件中使用這個macro時,鼠標移上去,按住ctrl鍵不能直接定位帶該macro定義的地方。這導致,實際開發中要找某個macro的代碼非常麻煩,還得動用eclipse的搜索功能!
今天本來想對這個插件進行二次開發,查看其源代碼時,居然發現其對上述功能是支持的,只是需要配置!
於是到網上找了一大圈,終於搞定了,現分享給大家。
在項目根目錄新建一個.freemarker-ide.xml(注意文件名前面有一個".",並與.project在同一目錄)。代碼如下:
- <config>
- <context-values>
- <!-- 該配置可以使path對應的文件中,如果使用key對象時,會自動補全其對應的java屬性(通配符無效) -->
- <resource path="src/main/webapp/WEB-INF/template/userList.ftl">
- <value key="loan" object-class="net.domain.UserDO"/>
- </resource>
- <!-- 其餘resource配置…… -->
- </context-values>
- <macro-library>
- <!-- 該配置可以使namespace命名空間下的所有macro、function自動補全 -->
- <entry namespace="component" path="src/main/webapp/WEB-INF/template/macro/component/component.ftl" project="web2.0" type="file"/>
- <!-- 其餘macro-library配置…… -->
- </macro-library>
- </config>
現在,在userList.ftl文件中,我們只需要輸入${user.}就會自動彈出其java類中定義的屬性了。
再將原來導入componet.ftl的命令
- <#include "/macro/component/component.ftl">
改爲:
- <#import "/macro/component/component.ftl" as component>
這樣,我們就爲component中的macro定義了一個命名空間 component(注意命名空間的名字要跟配置中的一樣)。現在我們使用component中的macro,只需要輸入"<@component."就會自動彈出component.ftl文件中定義的macro、function。而且將鼠標移上去,點擊可以直接跳到定義的地方!
注意:如果 你在.freemarker-ide.xml中配置了你正在編輯的ftl文件,需要將文件關閉後,重新打開,編輯器才能讀取到配置信息,代碼提示 才能生效!