在一个项目,页面经常要显示和隐藏一些控件,用wicket来控制显示和隐藏控件相当的方便。
1、最简单的隐藏和显示方法:
wicket的控件大部分都有setVisible(...)方法,用这个方法就可以隐藏和显示大部分的控件。
如
addEntSpNumPanel.setVisible(true);//显示
showSpNumUsePanel.setVisible(false);//隐藏
如果要点击某个控件的同时隐藏这个控件本身,可以这样做:
Button addSpNumButton = new Button("addSpNum") {
@Override
public void onSubmit() {
addEntSpNumPanel.setVisible(true);
showSpNumUsePanel.setVisible(false);
this.setVisible(false);//隐藏控件本身
}
};
2、通过ajax方式隐藏控件
这个可以说wicket一个做的不大好的地方。通过ajax方式隐藏控件要分两种情况分析。
(1)隐藏单一控件:
如果只是要隐藏一个控件,就比较容易做,比如,通过下拉框的ajax方式隐藏一个下拉框控件:
actTypeChoice.add(new AjaxFormComponentUpdatingBehavior("onchange") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
dataGroupChoice.setVisible(true);
target.addComponent(dataGroupChoice);
}
});
actTypeChoice是一个下拉框控件,当控件的值改变时,触发onUpdate(..)事件。在这里也要注意,target.addComponent(dataGroupChoice)中的控件dataGroupChoice必须设置一个属性才能正常隐藏显示,否则会报异常。属性如下:
dataGroupChoice.setOutputMarkupId(true);
(2)隐藏一个以上的控件
如果你要隐藏一个以上的控件,比如要隐藏一个表格,那么就最好把这个表格放在一个WebMarkupContainer里面,这样隐藏的时候只要控制这个WebMarkupContainer控件就可以了。看例子:
<span wicket:id="addEntSpNumPar">
<span wicket:id="addEntSpNum">
<table cellspacing="0" cellpadding="0" width="100%">
<tr>
<th align="right" style="width: 60px;">测试: </th>
<td style="width: 60%">
<input type="text" wicket:id="spNum"/>
</td>
</tr>
<tr>
<th align="right" style="width: 60px;">测试2: </th>
<td style="width: 60%">
<input type="text" wicket:id="spNum2"/>
</td>
</tr>
</table>
</span>
</span>
WebMarkupContainer addEntSpNumPanelPar = new WebMarkupContainer("addEntSpNumPar");
WebMarkupContainer addEntSpNumPanel = new WebMarkupContainer("addEntSpNum");
addEntSpNumPanel.setOutputMarkupId(true);
addEntSpNumPanelPar.add(addEntSpNumPanel);
TextField spNumText = new TextField("spNum", new Model());
addEntSpNumPanel.add(spNumText);
TextField spNumText2 = new TextField("spNum2", new Model());
addEntSpNumPanel.add(spNumText2);
改变事件:
actTypeChoice.add(new AjaxFormComponentUpdatingBehavior("onchange") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
addEntSpNumPanel.setVisible(false);
target.addComponent(addEntSpNumPanelPar);
}
});
分享到:
相关推荐
在Wicket基础知识培训中,首先会涉及到的是Web开发的基础——Servlet技术。Servlet是一种用于扩展Web服务器功能的Java类,它允许开发者处理HTTP请求并生成响应。Servlet的核心特性包括其服务器端运行、遵循特定规范...
以上是Wicket基础控件的一些关键概念,通过这些控件的组合和扩展,开发者可以构建出复杂且功能丰富的Web应用。在实际项目中,还需要了解如何处理事件、进行数据验证、应用CSS样式以及与其他服务集成等知识。Wicket的...
在深入探讨Wicket控件之前,我们需要了解几个基础概念: - **Model**:模型是Wicket框架的核心组成部分之一,用于存储控件的数据。它可以容纳任何类型的对象,因为其内部类型为`Object`。 - **Component**:组件是...
博文链接:https://superleo.iteye.com/blog/181053
例如,如果需要在主页面的页眉添加链接,可以创建一个新的Wicket组件,然后在不改动基础应用源码的情况下,通过Maven和WAR插件的配置,将这个新组件加入到Global项目中。 总结来说,这篇文章提供了一套详细的步骤,...
3. **可测试性**:由于业务逻辑与视图分离,Wicket 应用易于进行单元测试和集成测试。 4. **可扩展性**:Wicket 支持自定义标签库和组件,允许开发者根据需求创建新的功能模块。 5. **JSR 168/286 支持**:Wicket ...
Wicket是一个开源的Java Web应用程序框架,它提供了一种组件化的开发方式,使得Web应用的构建更为简单和直观。这个压缩包包含了一个Wicket的开发指南PDF文档以及一些示例项目,这些都是学习和掌握Wicket框架的重要...
Wicket的名称来源于板球运动中的“wicket”,象征着轻巧和速度。 **1.2 关于重新发明轮子的争论** 在Wicket的发展过程中,有一些声音质疑其是否必要重新创造一个Web框架。尽管存在这样的争议,但Wicket通过提供...
- Wicket 是一种基于 Java 的 Web 应用框架,最初由 Marc Guillemot 和 Eelco Hillenius 开发。 - 该框架首次公开发布是在 2004 年,自那时起经历了多次重大更新,逐渐成为一种成熟的 Web 开发工具。 - **设计...
- **Component的继承体系**:Wicket中的基本组件类及其派生类构成了控件的基础。 - **MarkupContainer的继承体系**:用于组织和管理组件。 - **Link的继承体系**:提供超链接功能。 - **FormComponent的继承体系**:...
这些库文件通常包含了框架的类库、依赖和其他必要的资源,是构建Wicket应用的基础。开发者需要将这些库添加到项目构建路径中,才能正常编译和运行Wicket项目。在实际开发过程中,了解并熟练运用这些库中的类和方法,...
1. **组件生命周期**:Wicket组件有三个主要状态——创建、渲染和服务。创建时,组件实例化;渲染时,组件将自身呈现到页面上;服务时,处理用户交互。了解这些生命周期对于优化性能和管理组件状态至关重要。 2. **...
- **信息输出控件**:如Label用于显示文本信息。 - **控件容器**:用于组织其他控件,如Panel、Border等。 - **超链接控件**:实现页面间的跳转。 - **表单输入控件**:包括Text、Password、Checkbox等多种类型的...
Apache Wicket是一款开源的Java Web应用框架,它以组件为基础,提供了丰富的功能来帮助开发者创建动态、交互式的Web应用程序。 【描述】:“自用,在线转移资源,使用带mvn插件的eclipse直接导入即可。”这说明这个...