2012-04-08 10 views
0

Begann lernen Wicket nach ASP.NET MVC und ein wenig verwirrt über die Verwaltung seiner URLs fühlen. Hier ist der Code:Wicket menschenlesbare URLs

Anwendung:

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; 
    } 
} 

HomePage:

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); 
    } 
} 

HomePage Markup:

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

Was ich haben wollte, ist ziemlich einfach. Ich erwartete, dass es 2 URLs geben würde: "/ page1" für HomePage.class und "/ page2" für Page2.class, dann hat meine HomePage einen Link, der zu Page2 navigiert und wenn HomePage gerendert wird, sollte dieser Link eine URL von haben "/Seite 2".

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

statt:

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

ich so etwas wie zu erwarten haben:

Wenn ich die Anwendung ausführen und zur Homepage gehen, wird es so gemacht. Was habe ich verpasst?

Antwort

2

Das Problem ist - ich sollte App init Methode anstelle von Ctor verwenden, um die Zuordnungen zu definieren.