读的是
wl95421的《wicket开发指南-简体中文版》,我之前没有接触过Tapestry,据说wicket借鉴了很多Tapestry的特性并做了相当的简化。上手几个demo后,感觉跟C/S的开发有点像,特别是类似delphi的组件型开发方式。一个页面有一个Page和markup组成,Page继承WebPage负责页面的输出,而markup文件描述界面,真正做到了html页面与java代码的分离,对网页编辑工具友好。wicket是通过在html中添加id来实现分离,比如:
<!----><label wicket:id="name">这里输出名字</label>
在Page中添加要输出的文字:
<!---->this.add(new Label("name","dennis zane"));
wicket与swing的设计理念一致,遵循MVC模式,Model用于提供数据,View是普通的html文件(markup文件),Controller是一个一个Page类。wicket同样提供了很多的控件,这样的开发方式非常类似ASP.net或者JSF,特别是一些高级控件的功能很强悍,比如Tree、TreeTable、GridView等等。感觉这个框架适合做快速开发,适用于中小型项目,因为此类项目的UI改动频率比较大,同时代码的侵入性太大。其他没什么好谈的,关于具体的开发请参考文档了,比较少见的是与spring的集成,有一个wicket-spring的扩展包可以实现将spring容器管理的bean注入wicket的Page中,比如UserPage调用UserService:
<!----> @SpringBean
private UserService service;
采用annotation标注。最后给个例子吧,整数的四则运算,首先看markup:
<!----><html>
<title>加法计算</title>
<body>
<center>
<span wicket:id ="feedback">这里用来输出信息</span>
<form wicket:id="form">
<input type="text" size='10' wicket:id="a"/> <select wicket:id="oper"></select> <input type="text" size='10' wicket:id="b"/> = <label wicket:id="result"></label>
<br><a wicket:id ="sumit">add</a>
</form>
</center>
</body>
</html>
一个feedback控件用于返回提示消息,两个text控件用于输入,一个下拉框用于选择运算符,另外一个标签显示结果了,普通的html代码,没有什么好解释的。再看TestPage.java:
<!---->import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import wicket.Component;
import wicket.markup.html.WebPage;
import wicket.markup.html.basic.Label;
import wicket.markup.html.form.DropDownChoice;
import wicket.markup.html.form.Form;
import wicket.markup.html.form.SubmitLink;
import wicket.markup.html.form.TextField;
import wicket.markup.html.panel.FeedbackPanel;
import wicket.model.Model;
public class TestPage extends WebPage {
private static List opers = new ArrayList();
static {
opers.add("+");
opers.add("*");
opers.add("-");
opers.add("/");
}
private String oper = "+";
private double result = 0;
private double a = 0, b = 0;
public TestPage () {
super();
add(new FeedbackPanel("feedback"));
TextField ta = new TextField("a", new Model() {
public void setObject(Serializable obj) {
a = ((Double) obj).doubleValue();
}
}, Double.class);
TextField tb = new TextField("b", new Model() {
public void setObject(Serializable obj) {
b = ((Double) obj).doubleValue();
}
}, Double.class);
Form form = new Form("form") {
protected void onSubmit() {
switch (oper.toCharArray()[0]) {
case '+':
result = a + b;
break;
case '-':
result = a - b;
break;
case '*':
result = a * b;
break;
case '/':
result = a / b;
break;
default:
result = a + b;
}
}
};
add(form);
form.add(ta);
form.add(tb);
Label label = new Label("result", new Model() {
public Object getObject(Component component) {
return String.valueOf(result);
}
});
form.add(label);
form.add(new SubmitLink("sumit"));
DropDownChoice dropDownChoice = new DropDownChoice("oper", new Model() {
public void setObject(Serializable obj) {
oper = (String) obj;
}
}, opers);
dropDownChoice.setRequired(true);
dropDownChoice.setNullValid(true);
form.add(dropDownChoice);
}
}
通过add方法添加控件,值的注意的就是怎么把控件跟Model联系起来,这只是个小例子,直接重写Model的setObject方法即可,将控件的值设置到变量以便计算。另外wicket的Page是线程安全的。
分享到:
相关推荐
**Wicket 指南** ...无论你是初学者还是经验丰富的开发者,都可以通过学习Wicket来提升Web应用程序的开发效率和质量。阅读《Wicket开发指南-简体版.pdf》将进一步帮助你掌握这个框架的精髓和实践技巧。
学习Wicket的封装动作和内部机制,如Ajax行为的注册和数据验证的触发,能更好地应对复杂场景。同时,了解如何在需要时手动干预框架的默认行为。 9. **实战难题及解决策略**: - **多选列表问题**:在使用多选列表...
Apache Wicket是一个为Java Web开发者提供的组件导向的框架,它能够帮助开发者在不编写大量JavaScript代码的情况下快速...通过学习本教程,Java开发者可以有效地掌握Wicket框架,开发出结构清晰、易于维护的Web应用。
这个“wicket简单实例”是为了帮助初学者理解Wicket的工作原理和基本操作,通过运行这些示例,你可以深入学习Wicket的核心特性。 1. **Wicket_link**: 这个示例展示了如何在Wicket应用中创建链接。Wicket的`Link`...
如链接所示,ITEYE博客上有关于Wicket的教程,这是学习Wicket的一个好起点。此外,官方文档、社区论坛和Stack Overflow等平台也是获取帮助和学习的好去处。 在压缩包"webLib"中,可能包含了Wicket应用的Web库文件...
使用这个版本,开发者可以了解和学习Wicket 6.x系列的特性和使用方法,同时也可以直接在项目中引用这些库文件进行开发。 总结来说,这个压缩包提供了一个使用Apache Maven构建的Apache Wicket项目,版本为6.16.0。...
1. **Wicket组件模型**:理解Wicket的核心在于其组件系统,学习如何创建、配置和嵌套组件,以及如何处理用户的输入和事件。 2. **模板语言**:Wicket支持多种模板语言,如HTML和Velocity,学习如何编写和使用模板来...
8. **学习与资源**:除了官方文档,Wicket社区提供了论坛(如文中提到的GoCom网站的Wicket BBS版面)供开发者交流、讨论和解决问题,促进了Wicket在中国的普及和发展。 总的来说,Wicket作为一个优秀的Web开发框架...
**Wicket 开发指南** Wicket 是一个开源的、基于Java的Web应用程序框架,它以其组件化、模型-视图-控制器(MVC)架构和轻量级特性而受到...通过学习和实践,你可以掌握使用Wicket构建高效、可维护的Web应用的技能。
- **低学习曲线:** 相比其他框架,Wicket 提供了一个更直观的 API 和简洁的文档,使得新用户能够快速上手。 - **规则配置:** 减少了对 XML 配置文件的依赖,简化了开发流程。 - **Ajax 支持:** 内置了对 Ajax ...
### Wicket开发详解 #### 一、Wicket简介 ##### 1.1 Wicket前生后世篇 Wicket是一个开源的Java Web应用框架,它最初由Geert...通过深入学习和实践,开发者可以充分发挥Wicket的优势,提高开发效率和应用程序的质量。
此外,学习如何利用Wicket的会话管理和URL映射功能也是很重要的。 通过比较Wicket和Struts,我们可以看到Wicket更加注重代码的简洁性和可测试性,而Struts则更加强调配置和流程控制。理解这两种框架的优缺点可以...
在本文中,我们将深入探讨Wicket框架中关于Tree组件的简单使用方法,这对于初学者来说是一份极好的学习资源。Wicket是一个强大的Java Web应用程序框架,它提供了丰富的组件库,其中包括用于显示层次结构数据的Tree...
**Wicket HelloWorld程序详解** Wicket是一个开源的Java Web应用程序框架,它强调组件化和模型-视图-控制器(MVC)的设计模式。这个“Wicket的Hello...对于初学者来说,理解这些基础知识是进一步学习Wicket的关键。
通过分析和学习“wicket-menu-6.5.0.zip”中的源代码,开发者不仅可以掌握如何在Wicket中构建动态菜单,还可以学习到如何将这一技术应用到自己的项目中,提升用户体验。同时,开源的性质意味着可以借鉴社区的最佳...
这个压缩包包含了一个Wicket的开发指南PDF文档以及一些示例项目,这些都是学习和掌握Wicket框架的重要资源。 一、Wicket框架简介 Wicket的核心理念是"组件就是一切",它将Web页面的HTML与Java代码紧密结合,通过...
学习Apache Wicket 7不仅涉及理论知识,还需要通过实践项目来加深理解。熟悉其API、组件模型、事件处理和模板系统,将有助于你构建出高效、可维护的Web应用程序。同时,持续关注Wicket社区的更新和最佳实践,可以...
通过这本书,开发者可以从零开始学习Wicket,逐步掌握其精髓。 **布置Wicket应用** `wicket-examples-1.4.0.war`文件是一个可部署的Web应用档案,可以直接部署到支持Servlet 2.4或更高版本的Web服务器上,如Tomcat...