特定の URL にアクセスするユーザーを Wicket ページにリダイレクトし、ページ内のアンカーまでスクロールする必要があります。たとえば、ユーザーは に直接リンクしhttp://.../target/url/123
ます。その後、123
ID がデータベースから検索されます。その後、エンティティが見つかったかどうかに基づいて、ユーザーは別のページにリダイレクトされます。
エンティティがフェッチされた後、ユーザーは にリダイレクトされhttp://.../another/url/123#element123
ます。Wicket でこれを実現するにはどうすればよいでしょうか? ページはアンカーなしでもアクセスできる必要があり、できればソリューションは汎用的である必要があります。
私が思いついた解決策の 1 つは、 という名前のエントリが含まれている場合に、PageParametersEncoder
ロジックをオーバーライドし#anchor
て url に追加することです。ただし、これは、アンカーを追加するために独自のクラスを拡張する必要があることを意味します。PageParameters
anchor
Url
public class ExtendedEncoder extends PageParametersEncoder {
public static final String ANCHOR = "anchor";
@Override
public Url encodePageParameters(PageParameters pageParameters) {
Url fromSuper = super.encodePageParameters(pageParameters.remove(ANCHOR));
return new ExtendedUrl(fromSuper,
pageParameters.get(ANCHOR).toOptionalString());
}
}
public class ExtendedUrl extends Url {
private String anchor;
private ExtendedUrl(Url url, String anchor) {
super(url);
this.anchor = anchor;
}
@Override
public String toString(StringMode mode, Charset charset) {
return super.toString(mode, charset)
+ anchor == null ? "" : "#" + anchor;
}
}
}
問題の他の解決策はありますか?