1

私の最終的な目標は、改札サイトのフォームに戻るボタンを生成することです。

現在、次の方法でリファラーを取得できます。

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

これは機能し、URL 全体を (文字列として) 取得しますが、これから Link オブジェクトを生成できません。

のコードを見てきましたが、内部についてはよくApplication.addMountわかりません。さらに、URL が を生成するためにIRequestHandler必要なものに変換される場所を正確に見つけることができませ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

これには を使用できるはずです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 に答える