Wicket:网站层次结构

Wicket:网站层次结构,wicket,Wicket,这是一个普遍的问题:如何用wicket中的所有页面和组件(这里是面板)构建我的网站。我想展示我的尝试,希望有人能给我建议,无论是好方法还是更好的方法 我的结构是: 根目录:主页 第1页扩展主页 第2页扩展主页 第3页扩展主页 页面包装内容及其自己的导航。他们在HomePage.html中使用wicket child获得init 现在,当我为Page1定义一个新面板时,我还必须为它定义一个链接。对于link onClick(),我将其引用的面板设置为可见,将所有其他面板设置为不可见。我还必须在第1

这是一个普遍的问题:如何用wicket中的所有页面和组件(这里是面板)构建我的网站。我想展示我的尝试,希望有人能给我建议,无论是好方法还是更好的方法

我的结构是:

根目录:主页
第1页扩展主页
第2页扩展主页
第3页扩展主页

页面包装内容及其自己的导航。他们在HomePage.html中使用wicket child获得init

现在,当我为Page1定义一个新面板时,我还必须为它定义一个链接。对于link onClick(),我将其引用的面板设置为可见,将所有其他面板设置为不可见。我还必须在第1页上定义面板,当我导航到第1页时会显示该面板。所有其他面板均不可见


这是一个好的尝试还是有更好的方法?现在我初始化了面板,只是让它们不可见

一次回答你问题的机会。。。这假设您使用的是Wicket 1.4.x

首先,您可以有许多级别的
Page
类,通常模仿设计和功能的重叠。例如,假设您有一个应用程序,其中人们“编写”、“浏览”和“阅读”用户创建的书籍

RootPage - common headers/footers, javascript imports
AbstractWritePage extends RootPage - for anything regarding authoring
AbstractBrowsePage extends RootPage - browsing
AbstractReadPage extends ReadPage - reading
然后,我实现了如下内容:

FullLibraryPage extends AbstractBrowsePage
FilterSearchPage extends AbstractBrowsePage
从长远来看,它变得复杂,但非常强大

其次,您的面板组件是可见/不可见的。如果您使用的是Wicket 1.4.x,那么应该查看每个面板的可重写方法
onConfigure()
。在此面板中,可以设置可见性,如下所示:

@Override
protected void onConfigure() {
    super.onConfigure();
    setVisible(!navTriggered);

}
其中
navTriggered
是驻留在包含页面中的布尔值。然后,您的链接可以执行以下简单操作:

@Override
protected void onClick(AjaxRequestTarget target) {
    navTriggered = false;
    target.addComponent(/* Appropriate panels; see below for multiples */);
}
这样做的好处是,可以由同一布尔变量触发多个面板。在页面创建时创建所有面板并没有错,即使它们一开始是不可见的

最后,如果你有很多面板需要改变/触发/等等,考虑使用标记界面将<代码>访问者< /代码>配对。类似于

public class Panel1 implements MyPanelGroup { ... }
public class Panel2 implements MyPanelGroup { ... }
然后,您可以使用
IVisitor
访问页面中
MyPanelGroup
的每个实例,并对可见性进行操作(设置可见性,将其添加到
AjaxRequestTarget
等)


希望这能回答一些问题:)

我不知道你想归档什么。您可以从基本页派生出几页。面板是什么?为什么必须切换可见性?所有页面上都有这些面板吗?我想我明白了,但是一些相关的代码会消除所有的歧义。就像我对jbrookover回答的那样。我只是想看看其他用户如何实现他们的ui的一些尝试,因为我不确定我的尝试。是的,这很有帮助。我不太确定我的等级结构。有一点就像你说的,我不确定是否要一次初始化所有面板并将它们设置为Invi。我只是想看看其他用户如何实现他们的ui。