当前位置: 首页 > 知识库问答 >
问题:

Wicket 8-扩展机制不工作

甄成弘
2023-03-14

我正在将一个应用程序从旧版本的wicket迁移到wicket 8。一些页面工作正常(简单页面,如登录)。这些页面不使用扩展机制。当我访问具有该机制的页面时,该机制不起作用。我不知道这是否是一个bug,但我尝试了所有的方法,但没有找到解决方案。我正在使用wicket 8.0.0-M5(我知道这不是一个稳定的版本)。有人有同样的问题吗?这是我的代码:

WerklijstPagexxx.html

<html xmlns:wicket>
 <body>
    <wicket:extend>
        <div wicket:id="panelXXX"></div>
    </wicket:extend>
</body>

Werklijspanelxxx.html

<wicket:head xmlns:wicket>
</wicket:head>

<wicket:panel xmlns:wicket>
    <div wicket:id="filter">
         <div wicket:id="label"></div>
    </div>
</wicket:panel>

WerklijstPageXXX.java

public class WerklijstPageXXX extends BasePage {

private WerklijstPanelXXX werklijstPanel;

public WerklijstPageXXX() {
    werklijstPanel = new WerklijstPanelXXX("panelXXX"){};
    add(werklijstPanel);
}

@Override
public Panel getContextPanel(String id)
{
    return werklijstPanel.getWerklijstFilterPanel();
}

Werklijspanelxxx.java

public abstract class WerklijstPanelXXX extends Panel {
private static final Logger LOG = LoggerFactory
        .getLogger(WerklijstPanelXXX.class);

private Panel filterPanel;

public WerklijstPanelXXX(String id) {
    super(id);
    WebMarkupContainer upperPanel = new WebMarkupContainer("filter");
    filterPanel = new Panel("filterPanel") {

    };

    add(upperPanel);

    upperPanel.add(new Label("label"));


}

public Panel getWerklijstFilterPanel() {
    return filterPanel;
}

编辑:BasePage。html(它的一部分)

<div id="body" class="body">
                <div id="aside" class="aside">
                    <div wicket:id="contextPanel"></div>
                </div>
                <div id="content" class="content">
                    <div class="padding">
                        <wicket:child></wicket:child>
                    </div>
                </div>
            </div>

BasePage.java

    @Override
protected void onInitialize() {
    super.onInitialize();
    add(getContextPanel("contextPanel"));
    addTabMenu();
    addMenu();
    addPatientBar();
}

错误:

根源:

org.apache.wicket.WicketRuntimeException:下面的组件无法呈现。可能的原因是:1)您在代码中添加了一个组件,但忘记在标记中引用它(因此组件永远不会呈现),2)如果您的组件添加在父容器中,请确保子容器的标记包含它们。

> < Li >[WerklijstPanelXXX[Component id = panel XXX,page = nl . Philips . raris . web . werklijst . werklijstpagexxx,path = panelXXX,type = nl . Philips . raris . web . werklijst . werklijst . WerklijstPanelXXX,isVisible = true,isVersioned = true],children =[web markup container[Component id = filter]]] < Li >[web markup container[Component id = filter,page = nl . Philips . raris . web . werklijst . werklijstpagexxx,path = panelXXX:filter,type = org . Apache . wicket . markup . html . web markup container,isVisible = true,isVersioned = true],children =[Component id = label]] < li>[Component id = label,page = nl . Philips . raris . web . werklijst . werklijstpagexxx,path = panelXXX:filter:label,type = org . Apache . wicket . markup . html . basic . label,isVisible = true,isVersioned = true] < Li > < p >[Panel[Component id = filter Panel,page = nl . Philips . raris . web . werklijst . werklijstpagexxx,path = filterPanel,type = org . Apache . wicket . markup . html . Panel . Panel,isVisible = true,isVersioned = true]]

在RequestCycle.java:912(org.apache.wicket.request.RequestHandlerExecutor.execute)在RequestHandlerExecutor.java:65(org.apache.wicket.request.cycle.RequestCycle.execute)在RequestCycle.java:283(org.apache.wicket.request.cycle.RequestCycle.processRequest)在RequestCycle.java:253(org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach)在RequestCycle.java:221(org.apache.wicket.protocol.http.WicketFilter.processRequestCycle)在WicketFilter.java:262(org.apache.wicket.protocol.http.WicketFilter.processRequest)在WicketFilter.java:204(WebPageRenderer.java:124)在org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:236)在org.apache.wicket.core.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:175)在org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(org.apache.wicket.Page.checkRendering)在Page.java:662(org.apache.wicket.Page.onAfterRender)在Page.java:805(org.apache.wicket.markup.html.WebPage.onAfterRender)在WebPage.java:209(org.apache.wicket.Component.afterRender)在Component.java:919(org.apache.wicket.Component.render)在Component.java:2335(org.apache.wicket.Page.renderPage)在Page.java:987(org.apache.wicket.request.handler.render.WebPageRenderer.renderPage)在org. apache. wicklet. servlet. doGet(WicketServlet. java: 137)在javax. servlet. http. HttpServlet. service(HttpServlet. java: 687)在javax. servlet. http. HttpServlet. service(HttpServlet. java: 790)在org. eclipse. jetty. servlet. ServletHandler(ServletHandler. java: 808)在org. eclipse. jetty. servlet. ServletHandler$CachedChain. doFilter(ServletHandler. java: 1669)在org.在org. springframework. orm. hibernate4. support. OpenSessionInViewFilter. doFilter内部(OpenSessionInViewFilter. java: 151)在org. springframe. web. filter. OncePerRequest estFilter. doFilter(OncePerRequest estFilter. java: 107)在org. eclipse. jetty. servlet. ServletHandler$CachedChain. doFilter(ServletHandler. java: 1652)

共有1个答案

丁雅懿
2023-03-14

Java和超文本标记语言组件树应该匹配。

您的HTML状态:<代码>

public WerklijstPageXXX() {
    werklijstPanel = new WerklijstPanelXXX("panelXXX"){};
    add(werklijstPanel);
}

@Override
public Panel getContextPanel(String id)  // HERE id is ignored
{
    return werklijstPanel.getWerklijstFilterPanel(); // This returns a panel with id `filterPanel`
}
 类似资料:
  • Ark 容器和 Ark Plugin 在运行时由不同的类加载器加载,不能使用常规的 ServiceLoader 提供 SPI 扩展,SOFAArk 自定义扩展点 SPI 机制, Ark Plugin 实现 SPI 机制,考虑到 Biz 卸载问题,Ark Biz 暂时不支持该 SPI 机制,只适用于 Ark Plugin 之间。 声明扩展接口 使用注解 @Extensible 声明扩展接口,注解定义

  • 本文根据 SOFAChannel#14 直播分享整理,主题:云原生网络代理 MOSN 扩展机制解析。 本文根据 SOFAChannel#14 直播分享整理,主题:云原生网络代理 MOSN 扩展机制解析。 大家好,我是今天的讲师永鹏,来自蚂蚁集团,目前主要负责 MOSN 的开发,也是 MOSN 的Committer。今天我为大家分享的是云原生网络代理 MOSN 的扩展机制,希望通过这次分享以后,能让

  • 本文介绍的是 MOSN 的扩展机制。 本文将才从以下几个方面介绍 MOSN 的扩展机制: MOSN 扩展能力和扩展机制的详细介绍; 结合示例对 MOSN 的 Filter 扩展机制与插件扩展机制进行详细介绍; MOSN 后续扩展能力规划与展望; 本问中的示例在 MOSN 的 Github 的 examples/codes/mosn-extensions 目录下,大家也可以下载下来运行一下。 MOS

  • 在WildFly 8-1上,我的webapps目录中有和。 我已配置: 我有以下JSF。 其中是 更新: 应Guaido79的请求,我的:

  • PHP-X是一个基于PHP ZendVM的C++封装层,可以基于PHP-X开发PHP扩展、C++嵌入PHP、PHP SAPI等程序。PHP-X可以大大降低PHP内核扩展开发的难度,提升效率。 开源中国码云:http://git.oschina.net/swoole/PHP-X Github仓库:https://github.com/swoole/PHP-X QQ群:376696453 环境依赖 P

  • 嘿,我对typo3很陌生,我想建立一个网站。我正在运行10.4版。安装了引导程序包的类型3中的4个。我已经试着跟着导游走了https://docs.typo3.org/typo3cms/extensions/gridelements/stable/ 我已将打字稿复制到模板设置中,但前端没有输出。记住我是新手,所以我还不能很好地理解打字稿<那我能做些什么呢? 编辑:我想使用GriElements,这