0

ASP.NET MVCの後にWicketの学習を開始し、URLの管理について少し混乱しました。コードは次のとおりです。

アプリケーション

package com.test.wicketapp1;

import org.apache.wicket.protocol.http.WebApplication;

public class WicketApplication extends WebApplication {
    public WicketApplication() {
        mountPage("/page1", HomePage.class);
        mountPage("/page2", Page2.class);       
    }

    @Override public Class<HomePage> getHomePage() {
        return HomePage.class;
    }
}

ホームページ

package com.test.wicketapp1;

import java.io.IOException;

import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.WebPage;

public class HomePage extends WebPage {
    private static final long serialVersionUID = 1L;

    public HomePage(final PageParameters parameters) throws IOException {
        BookmarkablePageLink<Page2> bookmarkablePageLink = new BookmarkablePageLink<Page2>("gopage2link", Page2.class);
        add(bookmarkablePageLink);
    }
}

ホームページのマークアップ

<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
    <head>
        <title>Apache Wicket Quickstart</title> 
    </head>
    <body>
        <a href="#" wicket:id="gopage2link">go page 2</a>
    </body>
</html>

私が欲しかったのはとてもシンプルです。HomePage.classの場合は"/page1"、Page2.classの場合は "/ page2"の2つのURLがあると予想しました。私のホームページには、Page2に移動するリンクがあり、ホームページがレンダリングされると、そのリンクのURLは次のようになります。 "/2ページ"。

アプリケーションを実行してホームページに移動すると、次のようにレンダリングされます。

<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
    <head>
        <title>Apache Wicket Quickstart</title> 
    </head>
    <body>
        <a href="./wicket/bookmarkable/com.test.wicketapp1.Page2" wicket:id="gopage2link">go page 2</a>
    </body>
</html>

私は次のようなものを期待していました:

<a href="/page2" wicket:id="gopage2link">go page 2</a>

代わりは。私は何を取りこぼしたか?

4

2 に答える 2

2

init問題は、マッピングを定義するためにctorの代わりにappのメソッドを使用する必要があるということです。

于 2012-04-08T10:36:37.530 に答える
1

これを見てください。それは役立つかもしれません

https://cwiki.apache.org/WICKET/request-mapping.html

于 2012-04-08T22:45:00.190 に答える