我正在尝试以下示例.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>
Run Code Online (Sandbox Code Playgroud)
我的页面在后面的dir结构中
com.merc.wicket.link.WicketLink.java and .html
com.merc.wicket.link.ChangeTextOnClick.java and .html
com.merc.wicket.main.HelloWorld.java and .html
Run Code Online (Sandbox Code Playgroud)
ber*_*ert 10
在Wicket中,您通常会使用Java中的链接引用另一个html文件,让Wicket为您生成href.您可以在修复URL(名为Bookmarkable Link,因为它们独立于用户会话)下安装页面,或者只使用链接.
对于Bookmarkable链接,您将在Wicket应用程序类的init()中执行以下操作:
public class WicketApplication extends WebApplication{
protected void init() {
super.init();
mountBookmarkablePage("/ChangeTextOnClick", ChangeTextOnClick.class);
mountBookmarkablePage("/HelloWorld", HelloWorld.class);
}
}
Run Code Online (Sandbox Code Playgroud)
有了这个,您总是可以在给定的URL下找到这2个页面.
您可以在MyPage.java中使用此链接创建指向该链接的链接:
add(new BookmarkablePageLink<ChangeTextOnClick>("myExampleLink"
,ChangeTextOnClick.class)
Run Code Online (Sandbox Code Playgroud)
并在相应的MyPage.html中:
<a href="thisGetsReplacedAtRuntime"
wicket:id="myExampleLink">Change Text On Click</a>
Run Code Online (Sandbox Code Playgroud)
如果你不希望链接是可收藏的,你不需要init()中的mountBookmarkablePage东西,并使用链接而不是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>
Run Code Online (Sandbox Code Playgroud)
是一种解决方案,或使用相对路径:
<wicket:link>
<ul>
<li>
<a href="ChangeTextOnClick.html">Change Text On Click</a>
<a href="../main/HelloWorld.html">Back</a>
</li>
</ul>
</wicket:link>
Run Code Online (Sandbox Code Playgroud)