java - Wicket 口 : org. apache.wicket.markup.MarkupNotFoundException

标签 java html apache wicket

WelcomePage.java

import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.Model;

import java.io.Serializable;
import java.util.ArrayList;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.data.DataView;
import org.apache.wicket.markup.repeater.data.ListDataProvider;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import com.ui.*;



 public class WelcomePage extends WebPage{

 private static final long serialVersionUID = 1L;

 public WelcomePage(){

    Contact contact = null;
    final List<Contact> list = new ArrayList<Contact>();

    char character;

    // a - z
    for(int i = 97; i < 123; i++){
        character = (char) i;
        contact = new Contact(String.valueOf(character));
        list.add(contact);
    }

    final DataView<Contact> dataView =
        new DataView<Contact>("simple", new ListDataProvider<Contact>(list)){

            private static final long serialVersionUID = 1L;

            @Override
            public void populateItem(final Item<Contact> item){
                final Contact user = item.getModelObject();
                item.add(new Label("id", user.getId()));
            }
        };

    dataView.setItemsPerPage(10);

    add(dataView);

    add(new PagingNavigator("navigator", dataView));
}

}

WelcomePage.html

<!DOCTYPE html>
<html>

<body>

<span wicket:id="lbl"> </span>


<wicket:extend>

<table cellspacing="0" class="dataview">
 <tbody>
   <tr wicket:id="simple">
     <td><span wicket:id="id">Test ID</span></td>
   </tr>
</tbody>
</table>

<div wicket:id="navigator"></div>

</wicket:extend>
</body>
</html>

以上代码用于显示Dataview - https://cwiki.apache.org/confluence/display/WICKET/A+Simple+DataView+Example

当我执行上述代码时,出现以下错误..

 Last cause: Can not determine Markup. Component is not yet connected to a parent. [Page class = com.kaiinos.kriti.ui.WelcomePage, id = 12, render count = 1]

堆栈跟踪 - 根本原因:

org.apache.wicket.markup.MarkupNotFoundException: Can not determine Markup. Component is not yet connected to a parent. [Page class = com.kaiinos.kriti.ui.WelcomePage, id = 12, render count = 1]
 at org.apache.wicket.Component.getMarkup(Component.java:751)
 at org.apache.wicket.Component.internalRender(Component.java:2378)
 at org.apache.wicket.Component.render(Component.java:2341)
 at org.apache.wicket.Page.renderPage(Page.java:1018)
 at org.apache.wicket.request.handler.render.WebPageRenderer.renderPage(WebPageRenderer.java:124)
 at org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:236)
 at org.apache.wicket.core.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:175)
 at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:895)
 at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
 at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:265)
 at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:222)
 at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:293)
 at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261)
 at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:203)
 at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:284)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
 at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
 at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
 at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
 at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
 at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
 at java.lang.Thread.run(Thread.java:745)

编辑-修改了java代码和html但得到了同样的错误。我只是一个初学者。 如有任何帮助,我们将不胜感激。提前谢谢您。

最佳答案

您提供的代码存在一些问题。如果您想学习如何编写 wicket 应用程序(而不是寻求明确定义的问题的帮助),StackOverflow 不适合您。正如 @martin-g 建议的那样,您可能想查看 Wicket user guide

至于您当前的代码:

  • <wicket:extend>定义了一组 html 来代替 <wicket:child>父组件标记中的标记。这意味着 <wicket:extend> 之外的任何内容,比如你的<span wicket:id="lbl"> </span> ,被忽略。
  • 使用 <wicket:extend>表明存在一个具有关联 HTML 文件的父组件,其中包含 <wicket:child>WelcomePage 的父组件是 Wicket 的 WebPage但它没有关联的 HTML 文件。这意味着您不能使用<wicket:extend>在你的WelcomePage .
  • 您的 WelcomePage 的构造函数称为 Sub1Page 。我猜这是您其他代码的剩余部分?无论如何,都是无效的。

尝试为您的 WelcomePage 重写 HTML类似:

<!DOCTYPE html>
<html xmlns:wicket>
<body>

<table cellspacing="0" class="dataview">
 <tbody>
   <tr wicket:id="simple">
     <td><span wicket:id="id">Test ID</span></td>
   </tr>
</tbody>
</table>

<div wicket:id="navigator"></div>
</body>
</html>

关于java - Wicket 口 : org. apache.wicket.markup.MarkupNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40713608/

相关文章:

apache - 跨域策略允许 Youtube

java - 为每个键在多个 JVM 上自动更新整数

html - 在 IE8 中自定义下拉列表高度

windows - SVN 和 Apache - 有什么优势吗?

javascript - 将 HandsonTable 连接到 MySQL 服务器

html - 如何将图像和文本置于 div 下方的中心?

PHP:无法加载动态库 intl.so (OSX)

java - 写入和读取 ArrayList<model>

java - 如何使用 Scala 中的 Enum.valueOf?

java - 如何在 Mac 上将 LibSVM 类添加到 WEKA 类路径