我正在嘗試爲使用FreeMarker的JSF Web項目創建源代碼生成器。該項目仍處於起步階段,源代碼可在https://github.com/TarekSaid/awesome/tree/master/Awesome處獲得。在這個問題的最後,我也包含了一些UML圖。如何使用FreeMarker以編程方式創建JSF視圖?
生成器解析一個json字符串以創建不同的組件(pom.xml,web.xml,controllers和views)。
到目前爲止,我已經能夠產生兩種類型的JSF項目:
顯示的Hello,World- 一個簡單的JSF項目!
- a「Hello,[NAME]」JSF項目的表單接收名稱並將其重定向到另一個視圖。
但我有意見問題。雖然當前的實現非常靈活(在ViewContent上使用某種裝飾模式)並且可行,但json字符串必須包含整個頁面。對於簡單的頁面,例如我生成的頁面,沒關係。但是,隨着我試圖產生的項目變得越來越複雜,觀點也越來越複雜。
舉例來說,這是JSON字符串我有一個簡單的「Hello World」應用程序:
{
"name":"simplehello",
"pomFile": {"groupId":"br.com.revo", "artifactId":"simplehello", "description":"the simplest JSF Project", "javaVersion":"1.7"},
"beans":[
{"name":"Hello", "scope":"VIEW", "fields":[{"type":"String", "name":"hello", "value":"\"Hello World!\""}]}
],
"views":[
{"name":"hello", "welcomeFile":true, "content":
{"name":"html","properties":{"xmlns":"http://www.w3.org/1999/xhtml","xmlns:h":"http://java.sun.com/jsf/html"},
"contents":[
{"name":"h:head","contents":[{"name":"title","value":"Simple Hello"}]},
{"name":"h:body", "value":"#{helloBean.hello}"}
]}
}
]
}
所以我能做些什麼來使用我的JSON字符串的自定義DSL並讓發電機處理視圖創作?我一直在使用Google周圍,這是我見過的可能性:
使用的FreeMarker的
<#include>
插入我需要的JSF組件:<#if content.text> <#include text.ftl> <#elseif content.form> <#include form.ftl> // etc... </#if>
生成一個bean是編程設計的網頁。
我怎樣纔能有效地使用FreeMarker的創建視圖?
這裏的用例,爲我的項目類別和活動圖: