`
shazhifeng
  • 浏览: 125201 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Wicket里面使用Ajax的小例子

阅读更多

<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范例(级联选择框)

    本文档通过一个具体的例子——级联选择框,来演示如何利用Wicket框架结合Ajax技术实现前端界面的动态更新。 #### 环境准备与基本配置 为了确保示例代码能够正常运行,首先需要搭建好开发环境: - **服务器**: ...

    wicket例子和开发指南

    4. AJAX应用:使用Wicket的AJAX功能实现动态更新。 5. URL和导航实例:演示如何设置和跳转URL。 6. 国际化示例:展示如何切换不同语言的界面。 7. 组件和模板的继承:使用父组件和模板进行代码复用的例子。 通过...

    Ajax-jaulp-wicket.zip

    Ajax-jaulp-wicket.zip,这个项目是ApacheWicket组件和实用程序的集合。,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不...

    wicket入门例子

    wicket入门例子,这些例子由官网提供,直接放在tomcat的webapps下即可运行

    wicket国际化例子

    在本文中,我们将深入探讨Wicket框架中的国际化(i18n)实现,以及如何使用`wicket:message`和`StringResourceModel`等工具来读取`.properties`资源文件。Wicket是一个流行的Java web应用程序框架,它提供了强大的...

    Wicket+Spring+Hibernate组合例子

    本示例中的“Wicket+Spring+Hibernate组合”就是一个典型的例子,它结合了三个强大的开源工具,分别用于前端、服务层和数据持久化。 **Wicket** 是一个Java Web开发框架,以其组件模型和页面状态管理著称。它允许...

    wicket的tree的简单实例

    接着是"Wicket_ajax",这个文件名暗示了使用Ajax技术与Tree组件交互的可能性。Wicket支持Ajax功能,使得用户无需刷新整个页面就能更新树的一部分。例如,当用户点击一个节点时,可以通过Ajax请求加载该节点的子节点...

    wicket指南

    3. **资源管理**:Wicket 使用`IResourceStreamLocator`和`IResourceStream`接口管理静态资源,如CSS、JavaScript文件。 **五、Wicket 的优点** 1. **学习曲线平缓**:Wicket 的API简洁明了,使得新手能够快速上手...

    wicket 官方JAVA教程

    开发Wicket应用可以使用Eclipse、IntelliJ IDEA等主流IDE,它们通常都有对应的Wicket插件,提供代码提示、调试等便利功能。 10. **学习资源** 如链接所示,ITEYE博客上有关于Wicket的教程,这是学习Wicket的一个...

    wicket文档

    Wicket是一种现代的、面向对象的Web框架,它的核心特性包括强大的组件模型、自动的数据绑定、内置的支持AJAX等功能。 **1.4 Wicket的特性** - **1.4.1 更加纯粹的Java和OO** Wicket完全采用Java语言编写,遵循...

    Wicket1.40.war包+开发指南.rar

    提供的`Wicket开发指南20061106.pdf`是一本详细的参考资料,它涵盖了Wicket的基本概念、安装、配置、组件使用、页面导航、模型、Ajax、国际化等多个主题。通过这本书,开发者可以从零开始学习Wicket,逐步掌握其精髓...

    Wicket 入门

    本文将详细介绍如何在 Eclipse 中使用 Maven 创建一个 Wicket 项目,以及运行和调试的基本步骤。 #### 一、Wicket 入门概述 Apache Wicket 是一款开源的 Java Web 开发框架,它的设计目标是使 Java 开发者能够像...

    wicket开发指南 pdf

    Wicket 的组件系统允许开发者添加自定义的行为(Behavior),这些行为可以增强组件的功能,例如添加AJAX支持、响应CSS类变化等。此外,还可以通过实现接口或继承现有组件来创建自定义组件。 **八、模板与主题** ...

    Wicket.pdf(Wicket开发指南)

    - Wicket 使用基于 Session 的状态管理机制,确保每个用户的会话独立且隔离。 #### 四、Wicket 基本控件 - **信息输出控件:** - **Label:** 用于显示简单的文本信息。 - **MultilineLabel:** 用于显示多行...

    Wicket开发指南

    可能还会深入讲解如何使用Wicket的Ajax功能,以及如何创建自定义组件和扩展库。 文件"8gxrz9328er1.pdf"可能是《Wicket开发指南》的电子版,其中详细阐述了Wicket框架的各个方面,包括最佳实践、示例代码和常见问题...

    wicket examples包

    wicket1.5.9的例子,里面包含了源码。

    wicket简单实例

    这是一个常见的Web应用示例,它展示了如何使用Wicket创建一个留言簿。用户可以通过表单提交留言,而这些留言会存储在服务器端并显示在页面上。这涵盖了Wicket的表单处理和数据持久化概念。 6. **Wicket_include**...

Global site tag (gtag.js) - Google Analytics