2010-01-18 35 views
14

是否可以爲MarkupContainer動態生成標記,即不爲其存儲HTML文件?Wicket中的動態標記

我曾想過將標記作爲數據庫中的純字符串讀取,以提供類似CMS的功能。

+0

太棒了!我將使用JTexy輕量級標記語言(http://code.google.com/p/jtexy/)。 – 2010-01-23 03:54:04

回答

9

有趣的問題,我不確定是否有可能,但我的猜測是開始尋找IMarkupLoaderIMarkupResourceStreamProvider接口和實現類,並看看你有多遠。
我會對任何你找到/實現的東西感興趣,它實際上完成了!

+4

感謝您的提示。那樣做了! MarkupContainer必須實現'IMarkupResourceStreamProvider'及其方法'getMarkupResourceStream()'。此外,您還創建了一個從「AbstractResourceStream」派生(例如)的類。在那裏,你可以實現一個只返回一個'InputStream'的方法。 'getMarkupResourceStream()'然後只返回這個新類的一個實例。 javadoc說這對緩存甚至是透明的。 – Wolfgang 2010-01-18 15:38:19

+1

這在參考指南[17.5從代碼生成HTML標記](http://wicket.apache.org/guide/guide/advanced.html#advanced_5)中有詳細記錄。 – aioobe 2015-01-17 22:32:49

-1

另一個(簡單)的方式來做到這一點是使用一個標籤有殘疾的標記轉義:

Label<String> label = new Label<String>("id", "<a href='....'><span>foo<em>bar</em></span></a>"); 
label.setEscapeModelStrings(false); 
add(label); 

不過要小心,因爲這可能會導致安全漏洞(HTML/JS注射)。

+0

感謝您的想法。不過,我不確定這是我尋找的。我想使用動態標記來使用MarkupContainer,也就是我期望在標記中使用某些標記:ids,並且我希望將更多的組件添加到容器中,然後將其映射到這些ID。恐怕您的解決方案無法實現。 – Wolfgang 2010-01-23 11:44:04

+0

是的,你是對的,我的不好。 – Jawher 2010-01-26 07:42:29

+0

這是一個非常糟糕的主意,考慮到安全漏洞,而且濫用標籤來顯示純HTML。 – RobAu 2013-06-17 13:04:00