【问题标题】:Wicket: Can't get correct Resource URL inside panels检票口:无法在面板中获取正确的资源 URL
【发布时间】:2011-11-10 14:25:21
【问题描述】:

我有一个面板,其中包含一个 ByteArrayResource、指向 ByteArrayResource 的 ResourceLink 和一个应该显示资源的相对 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;
  }
});

【问题讨论】:

    标签: java resources wicket panel


    【解决方案1】:

    第二个 url 是针对当前显示的页面计算的,因此它的相对 url 看起来与针对 '/home' 生成的不同。

    【讨论】:

    • 好吧,我想我明白了,但是 ResourceLink 会在两个面板上生成一个带有正确相对 URL 的链接。我需要做什么才能在标签中显示此 URL?
    猜你喜欢
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多