使用继承时Wicket 7链接/标签错误

使用继承时Wicket 7链接/标签错误,wicket,Wicket,有了Wicket 7,我正在开发一个应用程序,它使用一个基本页面作为其他页面扩展的模板 在基本页面上,我希望有一个标签和一个链接,根据用户是否经过身份验证而变化 以下是我的BasePage.html: <div wicket:id="chromeMenu">foo</div> <div> <h2 wicket:id="userGreeting"></h2> <h2><a href

有了Wicket 7,我正在开发一个应用程序,它使用一个基本页面作为其他页面扩展的模板

在基本页面上,我希望有一个标签和一个链接,根据用户是否经过身份验证而变化

以下是我的BasePage.html:

<div wicket:id="chromeMenu">foo</div>
    <div>
        <h2 wicket:id="userGreeting"></h2>
        <h2><a href="#" wicket:id="loginLink"><span wicket:id="loginLabel"></span></a> </h2>
    </div>
<wicket:child/>
主页扩展了基本页面

HomePage.html

<wicket:extend/>
它指出BasePage.html中的结构是问题的根源

我尝试了一些方法来解决这个问题,但没有成功。我想可能需要一个添加(链接)。添加(标签),但这也不起作用

有没有关于我遗漏了什么的想法?

问题就在这里

add(new Link("loginLink") {
        @Override
        public void onClick() {
            setResponsePage(LoginPage.class);
        }
    });
    add(new Label("loginLabel","Test"));
链接应为标签的父级:

link = new Link("loginLink") {
    @Override
    public void onClick() {
        setResponsePage(LoginPage.class);
    }
};
link.add(new Label("loginLabel","Test"));
add(link);
额外注意事项:

  • 如果setResponsePage()是
    onClick()中唯一需要的内容,那么最好使用BookmarkablePageLink
  • 使用AbstractLink#setBody(IModel标签)代替Link+标签
    • 问题出在

      add(new Link("loginLink") {
              @Override
              public void onClick() {
                  setResponsePage(LoginPage.class);
              }
          });
          add(new Label("loginLabel","Test"));
      
      链接应为标签的父级:

      link = new Link("loginLink") {
          @Override
          public void onClick() {
              setResponsePage(LoginPage.class);
          }
      };
      link.add(new Label("loginLabel","Test"));
      add(link);
      
      额外注意事项:

      • 如果setResponsePage()是
        onClick()中唯一需要的内容,那么最好使用BookmarkablePageLink
      • 使用AbstractLink#setBody(IModel标签)代替Link+标签
        • 问题出在

          add(new Link("loginLink") {
                  @Override
                  public void onClick() {
                      setResponsePage(LoginPage.class);
                  }
              });
              add(new Label("loginLabel","Test"));
          
          链接应为标签的父级:

          link = new Link("loginLink") {
              @Override
              public void onClick() {
                  setResponsePage(LoginPage.class);
              }
          };
          link.add(new Label("loginLabel","Test"));
          add(link);
          
          额外注意事项:

          • 如果setResponsePage()是
            onClick()中唯一需要的内容,那么最好使用BookmarkablePageLink
          • 使用AbstractLink#setBody(IModel标签)代替Link+标签
            • 问题出在

              add(new Link("loginLink") {
                      @Override
                      public void onClick() {
                          setResponsePage(LoginPage.class);
                      }
                  });
                  add(new Label("loginLabel","Test"));
              
              链接应为标签的父级:

              link = new Link("loginLink") {
                  @Override
                  public void onClick() {
                      setResponsePage(LoginPage.class);
                  }
              };
              link.add(new Label("loginLabel","Test"));
              add(link);
              
              额外注意事项:

              • 如果setResponsePage()是
                onClick()中唯一需要的内容,那么最好使用BookmarkablePageLink
              • 使用AbstractLink#setBody(IModel标签)代替Link+标签

                • 错误消息说明了一切

                  最后一个原因:在[Link]中找不到id为“loginLabel”的组件 [组件id=loginLink]] 应为:“loginLink:loginLabel”。 找到的名称类似:“loginLabel”

                  Wicket希望Java代码中的组件层次结构与您在HTML中编写的相同。在BasePage.html中,您有:

                  <h2><a href="#" wicket:id="loginLink"><span wicket:id="loginLabel"></span></a> </h2>
                  

                  错误消息说明了一切

                  最后一个原因:在[Link]中找不到id为“loginLabel”的组件 [组件id=loginLink]] 应为:“loginLink:loginLabel”。 找到的名称类似:“loginLabel”

                  Wicket希望Java代码中的组件层次结构与您在HTML中编写的相同。在BasePage.html中,您有:

                  <h2><a href="#" wicket:id="loginLink"><span wicket:id="loginLabel"></span></a> </h2>
                  

                  错误消息说明了一切

                  最后一个原因:在[Link]中找不到id为“loginLabel”的组件 [组件id=loginLink]] 应为:“loginLink:loginLabel”。 找到的名称类似:“loginLabel”

                  Wicket希望Java代码中的组件层次结构与您在HTML中编写的相同。在BasePage.html中,您有:

                  <h2><a href="#" wicket:id="loginLink"><span wicket:id="loginLabel"></span></a> </h2>
                  

                  错误消息说明了一切

                  最后一个原因:在[Link]中找不到id为“loginLabel”的组件 [组件id=loginLink]] 应为:“loginLink:loginLabel”。 找到的名称类似:“loginLabel”

                  Wicket希望Java代码中的组件层次结构与您在HTML中编写的相同。在BasePage.html中,您有:

                  <h2><a href="#" wicket:id="loginLink"><span wicket:id="loginLabel"></span></a> </h2>