2012-10-11 29 views
7

我們正在編寫一個grails(Grails 2.1.1)項目,對於我們的某些視圖,我們希望使用markdown而不是gsp文件。將Markdown用作Grails視圖

目前我們可以使用markdown plugin這個特殊的佈局來做到這一點。這使我們能夠呈現降價的觀點,像這樣:

render(layout: 'docs', view: 'markdown')

然而,這需要降價頁面有一個.gsp擴展的時候,實際的原因,我們需要有一個.MD擴展。

有誰知道使用markdown作爲grails視圖的更好方法嗎?如果我們可以避免使用.gsp擴展名,那將是非常好的。

+1

我認爲有一些方法可以將其他文件映射爲gsp文件,例如查看GSP-ass插件,它將.js文件映射爲gsp,這樣就可以像處理gsp文件一樣處理js文件。這可能是解決方案。 –

+0

謝謝。去看看他們是如何實現這一點,看看我們可以使用它。將回報! – River

+0

檢查此項目:https://github.com/edvinasbartkus/grails-mustache – moskiteau

回答

2

簡答

如果不進行一些大的修改,您將無法做到這一點。分發的GrailsViewResolver與.gsp和.jsp擴展綁定在一起。

請參閱grails-core on github進行驗證。

長的答案

您也許能夠塑造自己的Ant任務,它掛接到您的Grails應用程序的編譯週期,這樣,至少,你可以通過GroovyPageCompiler編譯* .MD文件。

該過程可能看起來像this(雖然不完全一樣,因爲我簡單地依靠插件的taglib來完成渲染)。

但是這並不能解決你所有的問題。您還需要註冊一個新的視圖解析器,爲此,您不可避免地要重寫GrailsDispatcherServlet

這聽起來像你存儲文件在conf目錄中的解決方案可能是你現在最好的(儘管很髒)的賭注。也許有人會花時間在未來允許可配置的GSP文件擴展名,這可能會解決您的問題。

我希望你能找到一些有用的信息。

+0

謝謝,我會在這周看看這些課程。我不知道使用Spring將它們與特定的子類交換是多麼容易。儘管我對目前的解決方案感到滿意,但我認爲這可能是問題的答案(很快會做出決定)。 – River

+0

是的,這是可行的,但你必須繼承靜態定義.gsp擴展的應用程序框架的每個部分。這可能很快失去控制,變得無法維護。更好的解決方案是在編譯階段添加一個任務,在gsp被編譯之前(也許是eventCompileStart掛鉤)將.md文件複製到.gsp擴展名,然後清理項目目錄中的.gsp文件。這就是我過去爲了類似的目標所做的。 –

+0

感謝您的回答。我認爲,如果我們決定將這種文檔技術用於更大型的項目,我們可能會考慮製作一個插件來重命名.md文件或類似的東西。目前,我認爲我們對conf目錄方法感到滿意! – River

0

我做了幾乎相同的事情,但今天採用了另一種方法。我想爲項目的自述文件提供服務,所以我無法將它移到任何地方。我最終將它從readme.md軟鏈接到grails-app/views/readme/readme.gsp。關於整個事情我posted

是的 - 如果你和你所有的同事都在* -nix上,軟鏈接工作,所以它不是一個安全的方式。