Wicket人类可读的URL

时间:2012-04-08 10:27:39

标签: java html url wicket

在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>

我想拥有的非常简单。我预计会有2个网址:HomePage.class为“/ page1”,Page2.class为“/ page2”,然后我的HomePage有一个导航到Page2的链接,当呈现HomePage时,该链接应该有一个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>

代替。我错过了什么?

2 个答案:

答案 0 :(得分:2)

问题是 - 我应该使用app的init方法而不是ctor来定义映射。

答案 1 :(得分:1)

看看这个。这可能会有所帮助

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