0

我使用 Wicket 6.7.0,在运行时出现以下异常:

最后一个原因:带有 Wicket 命名空间的未知标签名称:“面板”。可能是你没有安装合适的解析器?''(第 3 行,第 2 列)

我正在扩展 BookmarkablePageLink 并且我的组件有它自己的标记 html。它类似于来自 wicket-bootstrap 的代码: https ://github.com/l0rdn1kk0n/wicket-bootstrap/blob/master/bootstrap-core/src/main/java/de/agilecoders/wicket/core/markup/html /bootstrap/button/BootstrapBookmarkablePageLink.java

ExtBookMarkablePageLink.java

public class ExtBookMarkablePageLink<T> extends BookmarkablePageLink<T> {

private final Component label;

public <C extends Page> ExtBookMarkablePageLink(String id, Class<C> pageClass) {
    this(id, pageClass, new PageParameters());
}

public <C extends Page> ExtBookMarkablePageLink(String id, Class<C> pageClass, final PageParameters parameters) {
    super(id, pageClass, parameters);
    add(label = newLabel("label"));
}

protected Component newLabel(final String markupId) {
    return new Label(markupId, new Model<String>("")).setRenderBodyOnly(true);
}

@Override
protected IMarkupSourcingStrategy newMarkupSourcingStrategy() {
    return new PanelMarkupSourcingStrategy(true);
}

public ExtBookMarkablePageLink<T> setLabel(IModel<?> label) {
    this.label.setDefaultModel(label);
    return this;
}

}

ExtBookMarkablePageLink.html

<!doctype html>
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<span wicket:id="label"></span>
    </wicket:panel>
</html>

4

1 回答 1

0

您应该在组件的静态块中注册面板标签:

public class ExtBookMarkablePageLink<T> extends BookmarkablePageLink<T> {

    static {
        WicketTagIdentifier.registerWellKnownTagName(PANEL);
    }

    // ...
}
于 2013-05-14T09:36:30.477 回答