Калитка: Не удается получить правильный URL ресурса внутри панели - PullRequest
0 голосов
/ 10 ноября 2011

У меня есть панель, содержащая ByteArrayResource, ResourceLink для ByteArrayResource и метка, которая должна отображать относительный URL-адрес ресурса. I Метка получает свое значение, используя link.urlFor(IResourceListener.INTERFACE). Когда я создаю две панели на своей странице и переключаюсь между ними с помощью ссылки, только метка на панели, которая была добавлена ​​первой, будет отображать правильный URL.

Label from the first panel: ../wicket/page?0-IResourceListener-a_panel-lnk
Label from the second panel: page?1-IResourceListener-a_panel-lnk

Как вы видите, на второй панели отсутствует часть URL "../wicket/", почему это происходит и как я могу это исправить?

Мои панели при инициализации:

  @Override
  protected void onInitialize() {
    super.onInitialize();
    csv = new ByteArrayResource("text/csv") {
      //Generate the CSV
      //...
    };

    //Create a link to the CSV resource
    ResourceLink<Void> link = new ResourceLink<Void>("lnk", csv);
    add(link);
    //Display the URL to the resource
    add(new Label("lbl", (String)link.urlFor(IResourceListener.INTERFACE)));
  }

Вот как я добавляю панели на свою страницу и ссылку для замены панелей:

aPanel = new APanel("a_panel", resultsModel, false);
add(aPanel);
// Swap the panel
add(new Link<Void>("swap") {
  private static final long serialVersionUID = 1L;
  private Panel alt = new GraphPanel("a_panel", resultsModel, true);

  @Override
  public void onClick() {
    Panel tmp = aPanel;
    aPanel.replaceWith(alt);
    aPanel = alt;
    alt = tmp;
  }
});

1 Ответ

1 голос
/ 10 ноября 2011

Второй URL рассчитывается по отношению к отображаемой в данный момент странице, поэтому его относительный URL выглядит иначе, чем созданный для '/home'.

...