<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h4>这里测试Ajax</h4>
<span wicket:id="count"></span>
<br/>
<a wicket:id="ajaxLink">Click</a>
<form wicket:id="ajaxForm">
<span wicket:id="feedback"></span><br/>
name:<input type="text" wicket:id="name"/>
<input type="button" value="test" wicket:id="ajaxButton"/>
</form>
<form wicket:id="dropForm">
<select wicket:id="first"></select>
<select wicket:id="second"></select>
<input type="submit" value="submit"/>
</form>
</body>
</html>
AjaxTest.java
public class AjaxTest extends WebPage{
private int count;
private String name;
private List firstList = new ArrayList();
private List secondList = new ArrayList();
private String first;
private String second;
public AjaxTest(){
//////////////////////测试计算器////////////////////////////
final Label countLabel = new Label("count",new PropertyModel(this,"count"));
//要使用Ajax,必须调用setOutputMarkupId方法输出MarkupId
countLabel.setOutputMarkupId(true);
add(countLabel);
AjaxLink ajaxLink = new AjaxLink("ajaxLink"){
@Override
public void onClick(AjaxRequestTarget target) {
count++;
//一定要给AjaxRequestTarget添加子控件
target.addComponent(countLabel);
}
};
add(ajaxLink);
///////////////////////测试验证表单提交/////////////////////
Form ajaxForm = new Form("ajaxForm",new CompoundPropertyModel(this));
ajaxForm.setOutputMarkupId(true);
add(ajaxForm);
final FeedbackPanel feedback = new FeedbackPanel("feedback");
feedback.setOutputMarkupId(true);
ajaxForm.add(feedback);
TextField nameField = new TextField("name",new PropertyModel(this,"name"));
//设置name的最少长度为4
nameField.add(StringValidator.minimumLength(4));
nameField.setOutputMarkupId(true);
ajaxForm.add(nameField);
//设置一个AjaxFormValidatingBehavior,验证ajaxForm表单,事件为onkeyup
AjaxFormValidatingBehavior behavior = new AjaxFormValidatingBehavior(ajaxForm,"onkeyup"){
@Override
public void onError(AjaxRequestTarget target){
//为AjaxRequestTarget添加子控件
target.addComponent(feedback);
//将错误信息输出到feedback
super.onError(target);
}
};
//每秒向服务器发出请求
behavior.setThrottleDelay(Duration.ONE_SECOND);
//nameField添加了一个AjaxFormValidatingBehavior监听器,事件为onkeyup
nameField.add(behavior);
AjaxSubmitButton ajaxButton = new AjaxSubmitButton("ajaxButton",ajaxForm){
@Override
protected void onSubmit(AjaxRequestTarget target, Form form) {
info("AjaxButton提交!");
}
};
ajaxForm.add(ajaxButton);
/////////////////////测试联动下拉菜单////////////////////
firstList.add("1");firstList.add("2");firstList.add("3");
Form dropForm = new Form("dropForm",new CompoundPropertyModel(this));
dropForm.setOutputMarkupId(true);
add(dropForm);
final DropDownChoice firstDrop = new DropDownChoice("first",new PropertyModel(this,"firstList"));firstDrop.setRequired(true);
firstDrop.setOutputMarkupId(true);
final DropDownChoice secondDrop = new DropDownChoice("second",new PropertyModel(this,"secondList"));
secondDrop.setOutputMarkupId(true);
dropForm.add(firstDrop);
dropForm.add(secondDrop);
//为firstDrop添加AjaxFormComponentUpdatingBehavior监听,事件为onChange
firstDrop.add(new AjaxFormComponentUpdatingBehavior("onChange"){
@Override
protected void onUpdate(AjaxRequestTarget target) {
getSecondList().clear();
int index = Integer.parseInt((String)firstDrop.getModelObject());
for(int i=1;i<=4;i++){
getSecondList().add(String.valueOf(index*10+i));
}
//为AjaxRequestTarget添加子控件
target.addComponent(secondDrop);
}
});
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List getSecondList() {
return secondList;
}
public void setSecondList(List secondList) {
this.secondList = secondList;
}
public List getFirstList() {
return firstList;
}
public void setFirstList(List firstList) {
this.firstList = firstList;
}
public String getFirst() {
return first;
}
public void setFirst(String first) {
this.first = first;
}
public String getSecond() {
return second;
}
public void setSecond(String second) {
this.second = second;
}
}
分享到:
相关推荐
本文档通过一个具体的例子——级联选择框,来演示如何利用Wicket框架结合Ajax技术实现前端界面的动态更新。 #### 环境准备与基本配置 为了确保示例代码能够正常运行,首先需要搭建好开发环境: - **服务器**: ...
4. AJAX应用:使用Wicket的AJAX功能实现动态更新。 5. URL和导航实例:演示如何设置和跳转URL。 6. 国际化示例:展示如何切换不同语言的界面。 7. 组件和模板的继承:使用父组件和模板进行代码复用的例子。 通过...
Ajax-jaulp-wicket.zip,这个项目是ApacheWicket组件和实用程序的集合。,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不...
wicket入门例子,这些例子由官网提供,直接放在tomcat的webapps下即可运行
在本文中,我们将深入探讨Wicket框架中的国际化(i18n)实现,以及如何使用`wicket:message`和`StringResourceModel`等工具来读取`.properties`资源文件。Wicket是一个流行的Java web应用程序框架,它提供了强大的...
本示例中的“Wicket+Spring+Hibernate组合”就是一个典型的例子,它结合了三个强大的开源工具,分别用于前端、服务层和数据持久化。 **Wicket** 是一个Java Web开发框架,以其组件模型和页面状态管理著称。它允许...
接着是"Wicket_ajax",这个文件名暗示了使用Ajax技术与Tree组件交互的可能性。Wicket支持Ajax功能,使得用户无需刷新整个页面就能更新树的一部分。例如,当用户点击一个节点时,可以通过Ajax请求加载该节点的子节点...
3. **资源管理**:Wicket 使用`IResourceStreamLocator`和`IResourceStream`接口管理静态资源,如CSS、JavaScript文件。 **五、Wicket 的优点** 1. **学习曲线平缓**:Wicket 的API简洁明了,使得新手能够快速上手...
开发Wicket应用可以使用Eclipse、IntelliJ IDEA等主流IDE,它们通常都有对应的Wicket插件,提供代码提示、调试等便利功能。 10. **学习资源** 如链接所示,ITEYE博客上有关于Wicket的教程,这是学习Wicket的一个...
Wicket是一种现代的、面向对象的Web框架,它的核心特性包括强大的组件模型、自动的数据绑定、内置的支持AJAX等功能。 **1.4 Wicket的特性** - **1.4.1 更加纯粹的Java和OO** Wicket完全采用Java语言编写,遵循...
提供的`Wicket开发指南20061106.pdf`是一本详细的参考资料,它涵盖了Wicket的基本概念、安装、配置、组件使用、页面导航、模型、Ajax、国际化等多个主题。通过这本书,开发者可以从零开始学习Wicket,逐步掌握其精髓...
本文将详细介绍如何在 Eclipse 中使用 Maven 创建一个 Wicket 项目,以及运行和调试的基本步骤。 #### 一、Wicket 入门概述 Apache Wicket 是一款开源的 Java Web 开发框架,它的设计目标是使 Java 开发者能够像...
Wicket 的组件系统允许开发者添加自定义的行为(Behavior),这些行为可以增强组件的功能,例如添加AJAX支持、响应CSS类变化等。此外,还可以通过实现接口或继承现有组件来创建自定义组件。 **八、模板与主题** ...
- Wicket 使用基于 Session 的状态管理机制,确保每个用户的会话独立且隔离。 #### 四、Wicket 基本控件 - **信息输出控件:** - **Label:** 用于显示简单的文本信息。 - **MultilineLabel:** 用于显示多行...
可能还会深入讲解如何使用Wicket的Ajax功能,以及如何创建自定义组件和扩展库。 文件"8gxrz9328er1.pdf"可能是《Wicket开发指南》的电子版,其中详细阐述了Wicket框架的各个方面,包括最佳实践、示例代码和常见问题...
wicket1.5.9的例子,里面包含了源码。
这是一个常见的Web应用示例,它展示了如何使用Wicket创建一个留言簿。用户可以通过表单提交留言,而这些留言会存储在服务器端并显示在页面上。这涵盖了Wicket的表单处理和数据持久化概念。 6. **Wicket_include**...