2010-01-18 22 views
14

MarkupContainer işaretlemesini dinamik olarak oluşturmak mümkün mü, bunun için bir HTML dosyası saklamaksızın mı?Wicket'de dinamik işaretleme

Biçimlendirmeyi CMS benzeri işlevler sunmak için veritabanından düz bir dize olarak okumayı düşündüm.

+0

Harika! Bunu JTexy hafif işaretleme dili ile kullanacağım (http://code.google.com/p/jtexy/). –

cevap

9

İlginç bir soru ve mümkün olup olmadığından emin değilim, ama benim tahminim, IMarkupLoader ve IMarkupResourceStreamProvider arabirimlerine bakmak ve sınıfları uygulamaktan ve oradan ne kadar uzakta olduğunuzu görmeye başlamak olacaktır.
Bunu gerçekten yapan bir şey bulursanız ilgilenirim!

+4

İpucu için teşekkürler. Bu yaptı! MarkupContainer, IMarkupResourceStreamProvider öğesini ve getMarkupResourceStream() yöntemini uygulamalıdır. Ayrıca, (örneğin) AbstractResourceStream'den türeyen bir sınıf oluşturursunuz. Orada, bir 'InputStream' döndüren bir yöntem uygulayabilirsiniz. 'getMarkupResourceStream()' daha sonra bu yeni sınıfın bir örneğini döndürür. javadoc, bunun önbelleğe alma işleminin bile şeffaf olduğunu söylüyor. – Wolfgang

+1

Bu, [17.5 Koddan HTML biçimlendirmesi oluşturma] altındaki başvuru kılavuzunda belgelenmiştir (http://wicket.apache.org/guide/guide/advanced.html#advanced_5). – aioobe

-1

devre dışı işaretleme kaçması ile bir etiket kullanmak olacaktır yapmanın diğer bir (daha basit) yolu: Bu güvenlik ihlallerine (HTML/JS enjeksiyon) yol açabilecek şekilde

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

olsa dikkatli olun.

+0

Fikriniz için teşekkür ederiz. Yine de aradığım şeyden emin değilim. Bir MarkupContainer tarafından kullanılacak olan dinamik işaretlemeyi kullanmak istiyorum, yani işaretlemede bazı küçük harf: ids bekliyorum ve daha sonra bu bileşenlere eşlenecek olan konteynere daha fazla bileşen eklemek istiyorum. Korkarım ki bu senin çözümünle mümkün değil. – Wolfgang

+0

Yup, haklısın, benim kötü. – Jawher

+0

Bu, güvenlik ihlalleri göz önüne alındığında, aynı zamanda düz HTML görüntülemek için bir Etiket'in kötüye kullanılması düşünüldüğünde gerçekten kötü bir fikirdir. – RobAu