Czy możliwe jest dynamiczne generowanie znaczników dla MarkupContainer
, tj. Bez przechowywania pliku HTML?Dynamic markup in Wicket
Myślałem o czytaniu znaczników jako zwykłego łańcucha z bazy danych, aby zaoferować funkcjonalność podobną do CMS.
Czy możliwe jest dynamiczne generowanie znaczników dla MarkupContainer
, tj. Bez przechowywania pliku HTML?Dynamic markup in Wicket
Myślałem o czytaniu znaczników jako zwykłego łańcucha z bazy danych, aby zaoferować funkcjonalność podobną do CMS.
Interesujące pytanie i nie jestem pewien, czy jest to możliwe, ale domyślam się, że zacznę od spojrzenia na interfejsy IMarkupLoader i IMarkupResourceStreamProvider oraz zaimplementowanie klas i zobaczenie, jak daleko stąd się dostaniesz.
Byłbym zainteresowany czymkolwiek, co znalazłeś/wdrożyłeś, co faktycznie zostało zrobione!
Dzięki za podpowiedź. Tak to zrobiło! MarkupContainer musi implementować 'IMarkupResourceStreamProvider' i jego metodę' getMarkupResourceStream() '. Ponadto tworzymy klasę, która pochodzi (na przykład) z 'AbstractResourceStream'. Tam możesz zaimplementować metodę, która po prostu zwraca 'InputStream'. 'getMarkupResourceStream()' następnie zwraca instancję tej nowej klasy. Jawadok mówi, że było to nawet przezroczyste dla buforowania. – Wolfgang
Jest to dobrze udokumentowane w przewodniku informacyjnym pod [17.5 Generowanie znaczników HTML z kodu] (http://wicket.apache.org/guide/guide/advanced.html#advanced_5). – aioobe
Innym (prostszy) sposób to zrobić byłoby użyć etykiety z wyłączonym znaczników ucieczce:
Label<String> label = new Label<String>("id", "<a href='....'><span>foo<em>bar</em></span></a>");
label.setEscapeModelStrings(false);
add(label);
Bądź ostrożny, ponieważ może to prowadzić do naruszenia bezpieczeństwa (HTML/JS zastrzyk).
Dzięki za twój pomysł. Nie jestem pewien, czy tego właśnie szukałem. Chcę używać dynamicznego znacznika do użycia przez MarkupContainer, tj. Oczekuję pewnych znaczników wicket w znacznikach i chcę dodać kolejne komponenty do kontenera, które następnie powinny zostać odwzorowane na te identyfikatory. Obawiam się, że nie jest to możliwe z twoim rozwiązaniem. – Wolfgang
Yup, masz rację, moje złe. – Jawher
To jest naprawdę zły pomysł, biorąc pod uwagę naruszenia bezpieczeństwa, ale także nadużywanie etykiety do wyświetlania zwykłego HTML. – RobAu
Świetnie! Użyję tego z lekkim językiem znaczników JTexy (http://code.google.com/p/jtexy/). –