wicket wicket:link

4
我正在尝试以下示例。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>

我的网页在以下目录结构中:
com.merc.wicket.link.WicketLink.java and .html
com.merc.wicket.link.ChangeTextOnClick.java and .html
com.merc.wicket.main.HelloWorld.java and .html

我建议您尝试使用斜杠 / 代替点 . 作为目录分隔符,您也可以使用相对路径,例如 "../main/HelloWorld.html"。 - biziclop
谢谢,使用 ../main/... 的相对 URL 起作用了。使用 / 作为目录分隔符不起作用。如果您能将其放在答案中,我可以接受它。 - user373201
斜杠分隔符也应该可以使用,但是你可能需要一个前导斜杠,否则Wicket会认为它是一个相对链接。 - biziclop
3个回答

10

在 Wicket 中,通常使用 Java 中的 Link 引用另一个 html 文件,让 Wicket 为您生成 href。您可以将 Page 映射到一个固定的 URL 下(称为可书签链接,因为它们独立于用户会话),或者仅使用 Link。

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

public class WicketApplication extends WebApplication{

    protected void init() {
        super.init();
        mountBookmarkablePage("/ChangeTextOnClick", ChangeTextOnClick.class);
        mountBookmarkablePage("/HelloWorld", HelloWorld.class);
    }
}

通过这个方法,你始终可以访问给定URL下的那2页。

在MyPage.java中使用以下代码可以创建一个指向它们的链接:

add(new BookmarkablePageLink<ChangeTextOnClick>("myExampleLink"
                   ,ChangeTextOnClick.class)

在相应的MyPage.html中:

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

如果您不希望链接是可书签的,那么在init()中您就不需要使用mountBookmarkablePage,而是用Link替代BookmarkablePageLink。

看一下Wicket维基,您会发现那里有很多有用的信息。


5
原来我的猜测是正确的,这里就是答案:
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>

0

上面的答案是完美的。它不仅需要在项目中的不同文件夹中,而且可以在系统的任何文件夹中。如果在WicketApplication文件中正确配置,则仍然可以引用该文件。


4
答案可能会被重新排序。因此,如果您想评论答案,则评论功能会更有帮助。 - Nicktar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接