我的最终目标是在我的检票站网站表单中生成一个返回按钮。
现在我可以通过以下方式获取推荐人:
HttpServletRequest req = (HttpServletRequest)getRequest().getContainerRequest();
l.info("referer: {}", req.getHeader("referer"));
这可行,我得到整个URL(作为字符串),但我无法从中生成链接对象。
虽然我已经看到了Application.addMount
,IRequestHandler
以及更多的代码,但我还不确定内部是什么,我无法准确找到网址已转换为生成BookmarkablePageLink
所需的内容:Class
和PageParameters
。
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");
如果有人有更好的想法,我会暂时离开这个。
答案 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对象代码不变。