一,组件代码
DateField.java
package dncsoft.wicket.datepicker;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import org.apache.wicket.markup.html.form.FormComponentPanel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.util.resource.IResourceStream;
import org.apache.wicket.util.resource.PackageResourceStream;
import org.apache.wicket.velocity.markup.html.VelocityPanel;
public class DateField extends FormComponentPanel<String> {
private static final long serialVersionUID = 1L;
private Map<String, Object> map = new HashMap<String, Object>();
public DateField(final String id, IModel<String> model) {
super(id, model);
init();
}
private void init() {
map.put("value", getModel().getObject());
map.put("id", getInputName());
map.put("target", getInputName() + random());
add(new VelocityPanel("javascript", Model.ofMap(map)) {
private static final long serialVersionUID = 1L;
@Override
protected IResourceStream getTemplateResource() {
return new PackageResourceStream(DateField.class, "DateField.js");
}
});
}
private String random() {
Random rnd = new Random(System.currentTimeMillis());
return Integer.toString(rnd.nextInt());
}
@Override
protected void convertInput() {
super.convertInput();
String str = this.getConvertedInput();
map.put("value", str);
}
}
DateField.html
<wicket:panel><wicket:fragment wicket:id="javascript"></wicket:fragment></wicket:panel>
DateField.js
<span id="${target}"></span><script type="text/javascript">
new Ext.form.DateField(
{id:'${id}',
vtype:'daterange',
format:'Y/m/d',
allowBlank:false,
anchor:'32%',
value:'${value}'}).render('${target}');
</script>
二,Page代码
DatePickerPage.java
package dncsoft.wicket.page;
import dncsoft.wicket.datepicker.DateField;
import org.apache.wicket.IClusterable;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
public class DatePickerPage extends WebPage {
private static final long serialVersionUID = 1L;
private class MyFormData implements IClusterable {
private static final long serialVersionUID = 1L;
private String startDate = "2011-12-12";
@SuppressWarnings("unused")
public void setStartDate(String startDate) {
this.startDate = startDate;
}
@SuppressWarnings("unused")
public String getStartDate() {
return startDate;
}
}
private class MyForm extends Form<MyFormData> {
private static final long serialVersionUID = 1L;
public MyForm(String id, IModel<MyFormData> model) {
super(id, model);
add(new DateField("startDate", new PropertyModel<String>(model, "startDate")));
}
}
public DatePickerPage() {
MyFormData bean = new MyFormData();
CompoundPropertyModel<MyFormData> model = new CompoundPropertyModel<MyFormData>(bean);
MyForm form = new MyForm("form", model);
add(form);
}
}
DatePickerPage.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Portal Example</title>
<link rel="stylesheet" type="text/css" href="/wicket/html/css/ext-all.css" />
<link rel="stylesheet" type="text/css" href="/wicket/html/css/Portal.css" />
<script type="text/javascript" src="/wicket/html/js/ext-base.js"></script>
<script type="text/javascript" src="/wicket/html/js/ext-all.js"></script>
</head>
<body>
<div>
<form wicket:id="form">
<wicket:fragment wicket:id="startDate">[startDate]</wicket:fragment>
<input type="submit" value="set" />
</form>
</div>
</body>
</html>
// END
分享到:
相关推荐
Wicket与其他面向组件的框架相比 威克特说“你好世界!” 4.1。Wicket分发和模块 4.2。Wicket应用程序的配置 4.3。HomePage类 4.4。Wicket链接 4.5。摘要 5. Wicket作为页面布局管理器 5.1。页眉,页脚,左侧菜单,...
Wicket是一款开源的Java Web应用程序框架,它强调组件化和模型-视图-控制器(MVC)的设计模式。这个“wicket简单实例”是为了帮助初学者理解Wicket的工作原理和基本操作,通过运行这些示例,你可以深入学习Wicket的...
Wicket是一个开源的Java Web应用程序框架,它提供了一种组件化的开发方式,使得Web应用的构建更为简单和直观。这个压缩包包含了一个Wicket的开发指南PDF文档以及一些示例项目,这些都是学习和掌握Wicket框架的重要...
Wicket 是一个开源的、基于Java的Web应用程序框架,它以其组件化、模型-视图-控制器(MVC)架构和轻量级特性而受到开发者们的青睐。本指南将深入探讨Wicket的核心概念、工作原理以及如何有效地利用它来构建动态、...
- **添加(Addition)**:组件被添加到其父组件时,Wicket会为其生成HTML标记。 - **绑定(Mounting)**:将URL与页面或组件关联,使得可以通过URL访问。 - **渲染(Rendering)**:生成并发送HTML到客户端浏览器。 ...
Wicket 是一个开源的、基于组件的 Java Web 开发框架,它提供了一种简单而强大的方式来构建动态、交互性强的Web 应用程序。Wicket 的设计哲学是将Web 页面的视图与业务逻辑解耦,使得开发者可以专注于应用的业务需求...
整体来看,Wicket 7教程详细介绍了Wicket框架的使用,从基础概念到高级特性,涵盖了组件导向设计、页面布局、生命周期管理、请求处理机制、链接和URL生成、表单和模型处理等多个方面。通过学习本教程,Java开发者...
“ wicket组件”项目是apache wicket网络框架的组件库。 wicket组件引用了桌面应用程序的经典组件库(例如Microsoft Foundation Classes,QT Library或wxWindows),为wicket Web应用程序提供了图形用户界面组件。 ...
- **组件化:** Wicket 强调组件的概念,将 Web 页面视为组件树,每个组件负责显示部分视图或处理用户交互。 - **HTML 和业务逻辑分离:** Wicket 允许开发者使用标准 HTML 来构建界面,而将复杂的业务逻辑封装在 ...
Wicket 1.4 是一个基于Java的开源Web应用程序框架,它强调了组件化和页面的可重用性。这个框架允许开发者创建高度交互式的、动态的网页应用,而无需深入学习复杂的JavaScript或HTML。Wicket 1.4 版本是该框架的一个...
1. **组件驱动**:Wicket的组件可以绑定到模型,自动处理渲染和更新,这使得开发者可以专注于业务逻辑,而不是页面的呈现细节。 2. **无状态与有状态组件**:Wicket组件可以是有状态的(Stateful),这意味着它们会...
Wicket是一款开源的Java Web应用程序框架,它强调组件化和模型-视图-控制器(MVC)的设计模式。本指南将深入探讨如何使用Wicket进行中文开发,帮助开发者更好地理解和应用这个强大的框架。 **一、Wicket框架概述** ...
Apache Wicket是一个开源的、面向组件的Java Web应用框架。它允许开发者使用Java编写Web应用程序,同时利用了面向对象编程的特性来简化和加速Web开发过程。Wicket的重点是能够创建可重用、可维护的组件,并且提供了...
而isis-wicket-excel组件则是对Wicket Viewer的一个扩展,它添加了将数据导出为Excel文件的能力,这对于数据分析、报告生成和数据共享非常有用。 在isis-wicket-excel-master目录中,你可能会找到以下关键组成部分...
Wicket的组件库非常丰富,包含大量预建的UI组件,同时也支持自定义组件开发,满足各种需求。此外,还可以通过插件和扩展来增强框架的功能。 8. **源码阅读** 作为开源项目,Wicket的源码对于开发者来说是一份宝贵...
总结起来,"wicket-menu-6.5.0.zip"是一个展示Wicket框架构建菜单系统的实例,它涵盖了菜单组件的创建、数据绑定、动态更新以及用户交互等方面的知识,对于想要深入了解Wicket或者提高Web应用开发能力的开发者来说,...
Apache Wicket是一个开源的,基于Java,基于组件的Web应用程序框架。 通过适当的标记/逻辑分离,POJO数据模型以及令人耳目一新的XML缺乏,Apache Wicket使开发Web应用程序变得简单而又愉快。 交换样板,复杂的调试...