0

この(別の)サイトに同様の質問がたくさんあることは知っていますが、どれも私の問題を解決してくれませんでした。ウィケットのステートフル ページが 2 つあります。ページは次のようにマウントされます。

mountPage(firstPath, firstPage.class);
mountPage(secondPath, secondPage.class);

ページ firstPage を初めてロードするときは、デフォルトのコンストラクタでロードされ、URL は希望どおりに見えます。firstPage のフォームが送信されると、次のようにステートフル ページ secondPage に転送します。

Page secondPage = new secondPage(arg1, arg2);
RequestCycle().setResponsePage(secondPage);

2 番目のページがマウントされていますが、結果のページ (secondPage) は次の URL でレンダリングされます。

context?21-1.IFormSubmitListener-componentName-childComponentName-childComponentName-someForm

私が望むのは、私が定義したマウントされたパスでレンダリングされる secondPage です。私はこれがステートフルなページであることを知っており、ウィケットがその正確なインスタンスをロードするには、URL がステートフルでなければなりません。URLにページのバージョンとIDが含まれていてもかまいません。URLにこの長い醜いコンポーネントパスを入れたくないだけです。また、secondPage の URL に firstPage からフォームへのパスが必要な理由がわかりません。

私が理解している限り、ウィケット 1.4 HybridUrlCodingStrategy は同様のことを行うことができますが、ウィケット 1.5 でそれを行う方法が見つかりません。これは改札でできることですか?

これは本当に私をブロックしているので、どんな助けも大歓迎です。

4

1 に答える 1

0

置き換えてみてください:

Page secondPage = new secondPage(arg1, arg2);
RequestCycle().setResponsePage(secondPage);

と:

RequestCycle().setResponsePage(secondPage.class);

頭のてっぺんから作業する必要があります...

編集: パラメーターを渡していることに気付きました。その場合、secondPage を次のように変更する必要があります。

class secondPage extends WebPage
{
    public secondPage(PageParameters params) //Instead of secondPage(Type1 arg1, Type2 arg2)
    {
        arg1Type arg1 = params.get(0).to*{arg1Type}*();
        arg2Type arg2 = params.get(1).to*{arg2Type}*();
    }
}

そして、次のように呼び出します。

PageParameters params = new PageParameters();
params.set(0, arg1);
params.set(1, arg1);
RequestCycle().setResponsePage(secondPage.class, params);
于 2012-07-26T12:27:05.773 に答える