Wicket - получение тела элемента разметки - PullRequest
1 голос
/ 06 января 2011

Предполагая, что у меня есть разметка, которая выглядит следующим образом:

<span wicket:id="text">Some text that I'd like to read</span>

Возможно ли где-нибудь получить содержимое тела тега или оно безвозвратно удалено калиткой?

Редактировать: Я намерен внедрить какую-то простую CMS.Пользователи должны иметь возможность вводить формулы LaTeX в форме tex>a^2</tex>, которые я затем рендерил бы с RenderedDynamicImageResource.Другие теги должны интерпретироваться аналогичным образом.Я предполагал сделать это в два этапа с Panel, например так:

public class LightweightMarkupPanel extends Panel implements IComponentResolver {
    public LightweightMarkupPanel ( String id ) {
        super( id );
    }

    @Override
    public MarkupStream getAssociatedMarkupStream( boolean throwException ) {
        // Get the lightweight markup and convert it to wicket markup
        ...
    }

    @Override
    public boolean resolve( MarkupContainer container, MarkupStream markupStream, ComponentTag tag ) {
        // AutoAdd components as needed
        ...
    }
}

Некоторое время я боролся с этой проблемой, поэтому, возможно, я ищу в неправильном направлении.

1 Ответ

4 голосов
/ 06 января 2011

Объект MarkupStream компонента содержит необработанное тело HTML.Вы можете получить его с помощью метода markupStream.get (). ToString () следующим образом:

// <span wicket:id="message">message will be here</span>
add(new Label("message", "If you see this message ..."){
     @Override
     protected void onComponentTagBody(
         MarkupStream markupStream, ComponentTag openTag) {
         markupStream.get(); // "message will be here"
         super.onComponentTagBody(markupStream, openTag);
     }
});
...