Почему супер (id) не принимается? - PullRequest
1 голос
/ 30 марта 2020

Я кодирую сайт с выпадающим меню. Выпадающее меню имеет панель 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 говорит, что отсутствует метод Java, чтобы id был строкой. Но если я возьму super (id) , то он говорит, что есть разница в длине между фактическим и формальным аргументами.

Ответы [ 2 ]

2 голосов
/ 30 марта 2020

WebPage предоставляет 3 конструктора:

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

По умолчанию один, который принимает экземпляр IModel, а другой принимает PageParameters в качестве параметра.

String не является допустимым параметром для этого вызова конструктора.

Поскольку ваш класс расширяет WebPage, если в вашем конструкторе вы вызываете super(); или super(x);, вы на самом деле пытается вызвать один из конструкторов WebPages и должен предоставить правильные параметры.

0 голосов
/ 03 апреля 2020

Итак, как оказалось, моей ошибкой было заменить Panel на WebPage в конструкторе. Таким образом, моя линия вопросов спорна. Но есть вопросы, которые у меня остались, теперь, когда я придерживаюсь Panel для создания моего выпадающего меню. Если вам интересно, оставьте комментарий в теме для моего следующего вопроса!

...