簡體   English   中英

Spring MVC,FreeMarker和自定義TagLib

[英]Spring MVC & FreeMarker & Custom TagLib

在帶有FreeMarker的Spring MVC環境中,我有一個自定義TagLib,它可以處理帶有數據的ftl模板,並將結果寫入標簽的JSP上下文中。

當我從已解析的視圖(意味着從控制器渲染的模板)調用此標記時,此行為是完全正確的。

controller
    -> FTL
        -> TagLib

但是,當我從模板中調用它並由同一標簽的另一個實例處理時,出現錯誤(未定義標簽),並且在FTL中添加#assign語句時,我也收到了錯誤(JspTagLibs一片空白)。

controller
    -> FTL
        -> TagLib
            -> FTL
                -> TagLib (crash!)

我該如何解決?

提前致謝

要從FTL調用JSP標記,需要一個特殊的模板上下文(在FTL術語中為數據模型)來實現。 我假設Spring為初始調用提供了這樣的上下文。 但是,如果在第二種情況下從新的模板上下文開始(實際上是帶有新的freemarker.core.Environment ),則將無法獲得支持。 如果你並不真的需要一個新的模板背景下出現,你可以得到的Environment更高了靜態Environment.getCurrentEnvironment()然后使用Environment. include Environment. include調用第二個FTL。 但是,您將在那里使用與最頂層FTL相同的模板創建的變量集。 (如果第二個FTL僅定義一個宏並對其進行調用,則可以有所改善,因為該宏至少可以具有本地變量。)因此,您可以在以下情況下嘗試從更高的Environment重用dataModel (使用Environment.getDataModel() ):您稱為第二個FTL。 我想它應該可以工作...從未嘗試過。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM