1

我的最终目标是在我的检票口网站表单中生成一个返回按钮。

现在我可以通过以下方式获得推荐人:

HttpServletRequest req = (HttpServletRequest)getRequest().getContainerRequest();
l.info("referer: {}", req.getHeader("referer"));

这可行,我得到了整个 URL(作为字符串),但我无法从中生成 Link 对象。

我不确定内部结构,尽管我已经看到了 的代码Application.addMountIRequestHandler但我无法准确找到 URL 转换为生成BookmarkablePageLink:ClassPageParameters.

PS 我知道这可以用 JavaScript 来完成,但我想为没有激活 JS 的用户提供服务。

谢谢

我目前正在使用的可能解决方案:

public static WebMarkupContainer getBackButton(org.apache.wicket.request.Request request, String id) {
    WebMarkupContainer l = new WebMarkupContainer(id);
    HttpServletRequest req = (HttpServletRequest)request.getContainerRequest();
    l.add(AttributeModifier.append("href", req.getHeader("referer")));
    return l;
}

在我的标记中,我有:

<a wicket:id="backButton">Back</a>

然后,在我的 Page 对象中:

add(WicketUtils.getBackButton(getRequest(), "backButton");

如果有人有更好的想法,我会暂时开放。

4

1 回答 1

1

您应该可以为此使用 an ExternalLink

类似的东西

public Component getBackButton(org.apache.wicket.request.Request request, String id) {
    HttpServletRequest req = (HttpServletRequest)request.getContainerRequest();
    String url = req.getHeader("referer");
    return new ExternalLink(id, url, "Back");
}

用 html

<a href="#" wicket:id="backButton">this body will be replaced</a>

并且您的 Page 对象代码不变。

于 2014-04-27T12:31:32.123 回答