Wicket从URL String生成BookmarkablePageLink或Link

时间:2014-04-25 20:14:02

标签: wicket wicket-1.6 wicket-6

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

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

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

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

虽然我已经看到了Application.addMountIRequestHandler以及更多的代码,但我还不确定内部是什么,我无法准确找到网址已转换为生成BookmarkablePageLink所需的内容:ClassPageParameters

P.S。我知道这可以通过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");

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

1 个答案:

答案 0 :(得分:1)

您应该可以使用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对象代码不变。