4

ブックマーク可能なエイリアスにページがマウントされたウィケット Web アプリケーションがあります。ページには、送信アクションを持つフォーム オブジェクトが含まれています。

問題は、フォームがページに属しているにもかかわらず、アクション URL にページ エイリアスが含まれておらず、ウィケット アクションの不可解な形式で作成されていることです。その動作を調整する方法はあるので、リンクはpage_alias/submitのようになりますか?

...
setRenderStrategy(IRequestCycleSettings.ONE_PASS_RENDER);
mountBookmarkablePage("/resetpwd", ResetPasswordPage.class); 
...
public ResetPasswordPage(final String id, final PageParameters parameters) {
    final Form form = new StatelessForm();
    form.add(new Button("submit") { 
     public void onSubmit() {
         ...
        });
 add(form);
4

3 に答える 3

3

StatelessFormの代わりにサブクラス化する場合Form、これは途中であなたを連れて行きます。のようなものを持っているのではなく

action="myapp/?wicket:interface=:1:eventEditor::IFormSubmitListener::"

ブックマーク可能な URL にマウントされたフォームを含むページでは、次のような結果が得られます。

action="myapp/mount/path/some/params/?wicket:interface=:0:eventEditor::IFormSubmitListener::"

これはMixedParamUrlCodingStrategyマウントに a を使用しますWebApplication.init()

その後、オーバーライドencodeUrlInHiddenFields()して returnにできます。これにより、属性trueにクリーンな URL が表示されます。action

ただし、これによって Wicket がフォームを操作する方法が実際に変わるわけではありません。つまり、クライアントのマークアップに Wicket 固有の状態データがいくつか残っています。これが非常に難しい理由は、Wicket が状態を持つWeb アプリの構築を支援することを目的としているからだと私は信じています。Wicket は舞台裏で多くのことを行っていることに気付きました (送信されたフォームの値と、セッターが呼び出される前にモデルのゲッターが返す値を比較するなど)。

ただし、このブログ投稿で概説されているように、Wicket を使用して RESTful Web サービスを提供できます。このアイデアを拡張するwicket-rest と呼ばれる Google コードのプロジェクトもあります。コンポーネントベースのUI構築物全体を使用することは決してないため、これは同じように簡単に機能するように見えることに注意してください。

この記事を書いた人は別の問題を抱えていましたが、Wicket のフォームを少し理解するのに役立ちました.

于 2011-07-19T13:46:43.527 に答える
1

次のように HybridUrlCodingStrategy を使用することで、大量のリクエストを非表示にすることができます。

mount(new HybridUrlCodingStrategy("/resetpwd", ResetPasswordPage.class));

次に、送信をクリックすると、新しいページにリダイレクトしないと仮定すると、URLは次のように変更されます

mysite.com/DocRoot/resetpwd

mysite.com/DocRoot/resetpwd.1

または、本当にmysite.com/DocRoot/resetpwd/submitにしたい場合は、ResetPasswordResult.class などの新しいブックマーク可能なページを作成し、応答ページをそれに設定して、"/resetpwd/submit" にマウントします。

他のエンコーディング戦略を調べて、自分に適したものかどうかを確認してください: http://cwiki.apache.org/WICKET/url-coding-strategies.html

于 2009-12-04T00:44:05.217 に答える
0

http://day-to-day-stuff.blogspot.com/2008/10/wicket-extreme-consistent-urls.htmlを見て、それを Forms に適応させることができます。

于 2010-11-19T07:09:59.330 に答える