【问题标题】:Why is super(id) not being accepted?为什么不接受 super(id)?
【发布时间】:2020-03-30 05:15:27
【问题描述】:

我正在编写一个带有下拉菜单的网站。下拉菜单有一个 HTML 面板和一个 Java。

下拉菜单面板的Java

 package website.fgto.royals_of_britain.view.houses;

 import org.apache.wicket.markup.html.WebPage; import
 org.apache.wicket.settings.MarkupSettings; import
 org.apache.wicket.markup.html.link.BookmarkablePageLink; import
 org.apache.wicket.markup.html.link.Link; import
 org.apache.wicket.markup.repeater.RepeatingView; import
 org.apache.wicket.model.Model; import
 org.apache.wicket.request.mapper.parameter.PageParameters; import
 org.apache.wicket.spring.injection.annot.SpringBean;

 import website.fgto.royals_of_britain.service.HousesService;

 public class HousesDropdown extends WebPage {
      public HousesDropdown(String id) {
     super(id);

     add(buildDropdownLinks());   }

主页的 Java

     package website.fgto.royals_of_britain.view.houses;

     import org.apache.wicket.markup.head.CssHeaderItem; import org.apache.wicket.markup.head.IHeaderResponse; import
 org.apache.wicket.markup.html.WebPage; import
 org.apache.wicket.markup.html.basic.Label; import
 org.apache.wicket.request.mapper.parameter.PageParameters; import
 org.apache.wicket.request.resource.CssResourceReference; import
 website.fgto.royals_of_britain.WicketApplication; import
 website.fgto.royals_of_britain.view.Apology; import
 website.fgto.royals_of_britain.view.Footer; import
 website.fgto.royals_of_britain.view.houses.intros.*; import
 website.fgto.royals_of_britain.view.kings.KingsTableRows;

     public class HouseInformationPage extends WebPage {   private static final long serialVersionUID = 1L;

       public HouseInformationPage(final PageParameters parameters) {
         super(parameters);

         String houseName = parameters.get("houseName").toString();

         add(new Label("houseName", houseName));
         add(new HousesDropdown("housesDropdown"));
         add(new Footer("footerPanel"));

所以问题是,如果我保持这种状态,IntelliJ 说缺少将 id 作为字符串的 Java 方法。但是,如果我取出 super(id),那么它会说实际参数和形式参数之间的长度存在差异。

【问题讨论】:

  • WebPage 类中有什么构造函数?

标签: java html wicket


【解决方案1】:

WebPage 提供了 3 个构造函数:

https://ci.apache.org/projects/wicket/apidocs/6.x/org/apache/wicket/markup/html/WebPage.html

一个默认的,一个接受 IModel 的实例,一个接受 PageParameters 作为参数。

字符串不是此构造函数调用的有效参数。

由于您的类扩展了WebPage,如果您在构造函数中调用super();super(x);,实际上您是在尝试调用WebPages 构造函数之一,并且必须提供正确的参数。

【讨论】:

  • 1. String id:好的,所以我的网站是关于在不列颠岛上统治的朝代。字符串 id 拉出一个王朝名称,该名称是下拉菜单中的超链接之一,每次都用于所有菜单的链接。 2. 一个先前的问题:我的检票口从子容器中提取 li 元素,其中包含多个 a 元素,而不是每个 li 元素都有自己的 a 元素。我的“解决方案”是将主页上的检票口移动到下拉菜单的 ul 元素。那是 IntelliJ 反对字符串 id 的时候。
  • 不相关的时刻。 WebPage 没有接受单个字符串作为参数的构造函数。这就是它失败的原因。这与 IntelliJ 无关。你的超级(身份证);正在尝试调用父类(WebPage)中不存在的构造函数
  • 显然问题是我使用的是网页。如何获取 WebPage(PageParameters 参数)?
  • 问题不在于您使用的是网页。如何获取 HouseInformation 类的 PageParameters?
【解决方案2】:

事实证明,我的错误是在构造函数中将 Panel 替换为 WebPage。所以我的提问是没有实际意义的。但是我仍然有一些问题,因为我坚持使用面板来构建我的下拉菜单。如果您有兴趣,请在我的下一个问题的主题上发表评论!

【讨论】:

    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多