如何在GSP中聲明一個函數?我需要類似taglib的東西,但在GSP內聲明 - 外部並不重要是否可以在GSP中聲明一個函數?
回答
您無法在GSP中定義方法。但你可以有匿名函數,如果你想:d
例子:
<%
def prettify = { "***$it***" }
%>
<h1>${prettify(someText)}</h1>
雖然這個例子沒有什麼太大的意義,因爲這一點格式化會內聯。對於視圖的任何一種額外的邏輯,我會遵循OverZealous recommendation並使用taglib。
不,不要這樣做。這完全違背了普惠制的目的。 GSP旨在處理視覺標記信息,而不是編程邏輯。直接在您的GSP 中投擲功能會導致無法維護的代碼混亂。
爲什麼你不把它放在標籤中?這是標籤的用途;它只在您的GSP中使用並不重要。普惠制只應包含簡單的顯示邏輯和輸出內容。可複用代碼應始終包含在taglib中或用於複雜邏輯的某種控制器或服務中。
你沒有提到你使用的是什麼框架,比如Gaelyk或Grails。 (除非你出於某種原因在服務器上使用純粹的Groovy。)在沒有更多信息的情況下,沒有可行的方法來推薦一個好的解決方案。
如果您在GSP中使用JSP樣式標籤(<% %>
),則可能是錯誤的。
如果您想要更好的答案,請提供關於編程環境的更多詳細信息,目標是什麼,以及爲什麼(爲什麼您不想使用taglib)。
假設我有模板行。這個模板在這個GSP之外不會變化。是否可以在GSP中聲明模板? – 2012-02-07 11:10:29
我會使用'
對於小型內部模板(如層次結構)可能很有用。 – Guillaume 2014-08-08 16:22:43
- 1. 是否可以在接口中聲明一個私有函數?
- 2. 是否可以在Swift中聲明一個空函數作爲變量?
- 3. 是否可以在TypeScript中聲明和調用函數字典?
- 4. 是否可以在Puppet中「聲明」?
- 5. 是否可以在接口聲明中聲明一個超類的鏈?
- 6. 是否可以用數組聲明一個數組?
- 7. 是否可以聲明一個數組數據類型列? SQL
- 8. 是否可以在XAML中聲明一個類型別名?
- 9. 我可以在Python中的函數中聲明一個類嗎?
- 10. 是否可以在函數範圍內聲明/實現模板?
- 11. 在視圖中聲明一個函數是否好?
- 12. 是否有必要在main中聲明一個函數?
- 13. 是否可以測試一個C定義是否在gnu Makefile中聲明?
- 14. 是否有可能在c#中聲明一個數組爲readonly?
- 15. 是否有可能在F#中的函數範圍聲明一個類型?
- 16. 在IIF聲明的第一部分中是否可以使用類似聲明?
- 17. 是否可以使用css3聲明js事件和/或函數?
- 18. 是否可以分離內聯函數的聲明和定義?
- 19. 我可以在一個聲明中
- 20. 是否可以在函數調用方中聲明關聯數組?
- 21. 是否可以在String中聲明Java中的默認參數?
- 22. 是否有可能在構造函數中聲明變量[Java]
- 23. 委託聲明是否可以繼承另一個委託聲明?
- 24. 在ES6中聲明一個函數?
- 25. 在函數中聲明的var在多個函數調用中是否存在?
- 26. 函數聲明不是一個原型
- 27. 是否可以將一個GDB便利變量聲明爲一個數組?
- 28. 是否可以在C++中聲明指向模板函數的void指針?
- 29. 是否可以在PHP中抑制函數重新聲明錯誤?
- 30. Jsonix - 是否可以在屬性聲明中創建一個集合並聲明2個或多個元素?
我同意在大多數情況下,a Taglib(或用'g:render'調用的子模板)是正確的解決方案。但有時候會有一些重複的邏輯,在GSP中只寫一次是好事,但不能保證這樣的升級到外部文件。在這些情況下,我喜歡這樣寫:' '注意定義閉包的雙線性{{}}'。然後,您可以像使用常規函數那樣使用它:'{{greet(「Sam」)}' –
Tobia
2015-05-20 10:41:54