Wicket 小门小门:链接

Wicket 小门小门:链接,wicket,Wicket,我正在尝试下面的例子。ChangeTextOnClick.html工作正常,因为它与包含以下代码段(WicketLink.html)的文件位于同一目录中。但是HelloWorld.html不能像在另一个包中那样工作。我如何引用其他包上的页面 <wicket:link> <ul> <li> <a href="ChangeTextOnClick.html">Change Text

我正在尝试下面的例子。ChangeTextOnClick.html工作正常,因为它与包含以下代码段(WicketLink.html)的文件位于同一目录中。但是HelloWorld.html不能像在另一个包中那样工作。我如何引用其他包上的页面

 <wicket:link>
        <ul>
            <li>
                <a href="ChangeTextOnClick.html">Change Text On Click</a>
                <a href="com.merc.wicket.main/HelloWorld.html">Back</a>
            </li>
        </ul>
    </wicket:link>

在Wicket中,您通常会使用Java中的链接引用另一个html文件,以便Wicket为您生成href。您可以在固定URL(称为书签链接,因为它们独立于用户会话)下装载页面,也可以只使用链接

对于可书签链接,您可以在Wicket应用程序类的init()中执行以下操作:

public class WicketApplication extends WebApplication{

    protected void init() {
        super.init();
        mountBookmarkablePage("/ChangeTextOnClick", ChangeTextOnClick.class);
        mountBookmarkablePage("/HelloWorld", HelloWorld.class);
    }
}
有了这个,你总是可以在给定的URL下访问这两个页面

您可以在MyPage.java中使用以下内容创建指向此处的链接:

add(new BookmarkablePageLink<ChangeTextOnClick>("myExampleLink"
                   ,ChangeTextOnClick.class)
add(新的BookmarkablePageLink(“myExampleLink”)
,ChangeTextOnClick.class)
在相应的MyPage.html中:

<a href="thisGetsReplacedAtRuntime" 
                  wicket:id="myExampleLink">Change Text On Click</a>

如果您不想让链接成为可书签链接,则不需要init()中的mountBookmarkablePage内容,而是使用a链接而不是BookmarkablePageLink


看看Wicket wicki,你会在那里找到很多有用的信息。

事实证明我的猜测是正确的,所以这里是一个答案:

Wicket使用
/
作为路径分隔符,而不是

<wicket:link>
    <ul>
        <li>
            <a href="ChangeTextOnClick.html">Change Text On Click</a>
            <a href="/com/merc/wicket/main/HelloWorld.html">Back</a>
        </li>
    </ul>
</wicket:link>

是一种解决方案,或使用相对路径:

<wicket:link>
    <ul>
        <li>
            <a href="ChangeTextOnClick.html">Change Text On Click</a>
            <a href="../main/HelloWorld.html">Back</a>
        </li>
    </ul>
</wicket:link>


上述答案非常完美。它不仅需要位于项目中的不同文件夹中,还可以位于系统文件夹中的任何位置。如果在WicketApplication文件中正确配置,仍然可以引用该文件。

我可能会尝试使用/而不是.作为目录分隔符,并且可以使用相对分隔符目录,即“./main/HelloWorld.html”谢谢,使用../main/…的相对url起作用了。使用/as dir separator不起作用。如果你可以将其作为答案,我可以接受它/separator也应该起作用,但你可能需要一个前导/,否则wicket会认为它是一个相对链接。答案可能会被重新排序。因此,如果你想对答案进行注释,注释函数将我会更有帮助的。
<wicket:link>
    <ul>
        <li>
            <a href="ChangeTextOnClick.html">Change Text On Click</a>
            <a href="../main/HelloWorld.html">Back</a>
        </li>
    </ul>
</wicket:link>