`
tailorcai
  • 浏览: 93628 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

我的第一个Ajax Wicket控件:Google Ajax Image Search (1)

阅读更多
最近看到Google发布了新的基于Ajax的图片搜索功能,正好本人在研究Wicket,在网上Google了一下,看到WicketStuff中只有对GoogleMap的支持,因此想自己开发一个,顺便练练手。

创建工程和代码框架
首先创建一个Wicket工程,并创建一个页面。我本人用的是Wicket Bench,不过它是针对1.2设计的,而我的库用的是1.3,因此,自动生成的import有问题,需要手工改一下。不过,对于eclipse来说,这是小菜一叠儿啊。然后添加一个wicket component,名字叫GImageSearch。

java 代码
 
  1. public class GImageSearch extends Panel {  
  2.     public GImageSearch(String id, IModel model) {  
  3.         super(id, model);  
  4.     }  
  5. }  

我只实现了这个构造函数,model是用来获得搜索的条件的字符串。现在先不管他,后面会用到。
相应的Html页面


xml 代码
 
  1. <html xmlns:wicket>  
  2. <wicket:panel>  
  3. <div id="searchcontrol">Loading<!---->

<wicket:panel> </wicket:panel> 加入Ajax支持
由于要用到Ajax,因此参考了一下AjaxEditableLabel的例子。对于模块化的Wicket来说,引入Ajax涉及到几个问题:
1.  额外的js文件的引入,一般是在Head中。
2. 对当前component的html的动态修改。
3. Ajax回调到Server。

对这些问题,Wicket都有很好的解决方案。

实现AjaxBehavior
首先创建一个内部类:
java 代码
 
  1. protected class SearchAjaxBehavior extends AbstractDefaultAjaxBehavior {  
  2.         @Override  
  3.         public void renderHead(IHeaderResponse response) {  
  4.         }  
  5.         @Override  
  6.         protected void respond(AjaxRequestTarget target) {  
  7.         }  
  8. }  


在构造函数后面加入一行:
java 代码
 
  1. add( new SearchAjaxBehavior());  


这样当Component被加入到页面中的时候,会自动调用renderHead完成对HTML-Head的扩充。
加入代码(完全照抄Google的例子):
java 代码
 
  1. @Override  
  2. public void renderHead(IHeaderResponse response) {  
  3.     response.renderCSSReference("http://www.google.com/uds/css/gsearch.css");  
  4.     response.renderJavascriptReference("http://www.google.com/uds/api?file=uds.js&v=1.0");  
  5.      
  6.     StringBuffer buffer = new StringBuffer("")  
  7.     .append("function initGSearch() {\n")  
  8.     .append("\tvar searchControl = new GSearchControl();\n")  
  9.     .append("\tsearchControl.setOnKeepCallback(this, MyKeepHandler);\n")  
  10.     .append("\tsearchControl.addSearcher(new GimageSearch());\n")  
  11.     .append("\tsearchControl.draw(document.getElementById(\"" + "searchcontrol" + "\"));\n")  
  12.     .append("}\n")  
  13.     .append("\tfunction MyKeepHandler(result) {\n")  
  14.     .append("}")  
  15.     .append("GSearch.setOnLoadCallback(initGSearch);\n");  
  16.     response.renderJavascript(buffer.toString(), "gsearch-init");  


现在可以看一下效果了:别忘了加上WebPage的代码,很简单的:
java 代码
 
  1. public class ImageTest extends WebPage {  
  2.     public ImageTest() {  
  3.         add( new GImageSearch("gsearch",null));  
  4.     }  
  5. }  
html 代码(JavaEye贴入html代码好像有问题,哪位告诉一下如何贴?)
 
  1.     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3.   <head>  
  4.     <meta http-equiv="content-type" content="text/html; charset=utf-8"/>  
  5.     <title>Hello World - Google AJAX Search API Sample<!---->title>  
  6.   <!---->head>  
  7.   <body>  
  8.     <span wicket:id="gsearch" />  
  9.   <!---->body>  
  10. <!---->html>  

接下来,我们要将用户喜欢的图片信息保存到服务器。To be continued...
  • 大小: 279.2 KB
分享到:
评论

相关推荐

    wicket的ajax范例(级联选择框)

    具体来说,第一个选择框包含三个选项:“1”、“2”、“3”,而第二个选择框中的选项则为第一个选择框选中项的十倍。 为了实现这一功能,我们需要重写第一个选择框的`onChange`方法,使得当第一个选择框的值发生...

    wicket常用控件使用方法

    Wicket是一个灵活而强大的Java Web框架,它提供了一套简洁高效的API用于构建复杂的Web应用程序。与.NET平台的开发方式相似,Wicket允许开发者在HTML页面中声明控件,并在Java代码中处理这些控件的逻辑。本篇文章将...

    Ajax-jaulp-wicket.zip

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

    wicket基础控件

    Wicket 是一个强大的Java Web应用程序框架,它提供了一种组件化的开发方式,使得开发者可以创建出高度交互且易于维护的Web应用。Wicket的基础控件是构建用户界面的核心元素,这些控件帮助开发者构建出丰富的表单、...

    wicket例子和开发指南

    2. 第一个Wicket应用:介绍如何创建一个简单的"Hello, World!"应用,理解Wicket的基础架构。 3. 组件和页面:讲解Wicket中的组件模型,如何创建和使用组件,以及如何组织页面结构。 4. 模型和数据绑定:解释如何处理...

    Wicket.pdf(Wicket开发指南)

    - **低学习曲线:** 相比其他框架,Wicket 提供了一个更直观的 API 和简洁的文档,使得新用户能够快速上手。 - **规则配置:** 减少了对 XML 配置文件的依赖,简化了开发流程。 - **Ajax 支持:** 内置了对 Ajax ...

    wicket指南

    1. **创建页面类**:在Wicket中,每个页面都有一个对应的Java类,类中定义了页面的组件和行为。 2. **绑定HTML模板**:页面类与HTML模板通过`@MountPath`注解或`WebPage`的构造函数关联。 3. **组件定义**:使用`add...

    Wicket开发指南

    - **Wicket的历史与背景**:Wicket是一款基于Java的开源Web应用框架,它强调组件化的编程方式,并且支持多种现代Web开发特性,如AJAX等。Wicket的设计理念是为了简化Web应用的开发过程,使开发者能够更加专注于业务...

    wicket国际化例子

    Wicket是一个流行的Java web应用程序框架,它提供了强大的组件模型和灵活的国际化支持。 **一、Wicket的国际化基础** 1. **什么是国际化(i18n)**:国际化是一种软件设计方法,使得应用程序能够适应不同地区的...

    wicket 基础知识培训

    Wicket 是一个开源的Java Web框架,用于构建可重用且易于维护的Web应用程序。它以其组件模型和数据绑定机制而闻名,与Struts等传统MVC框架相比,提供了更直观和面向对象的编程方式。 在Wicket基础知识培训中,首先...

    Wicket In Action 正式版

    - **第1章:Wicket是什么**:介绍Wicket的历史背景、设计理念以及与其他框架的区别。 - **第2章:Wicket的架构**:深入探讨Wicket的内部架构,包括组件、模型和会话等核心概念。 - **第3章:构建一个简单的Wicket...

    wicket文档

    第一个例子 **3.1 老姜一块­­"HelloWorld"** 本节介绍了一个简单的Wicket "HelloWorld" 示例,展示了如何快速搭建一个Wicket项目。 **3.2 Wicket程序的开发步骤** - **3.2.1 制作一个Html模板** 创建HTML...

    wicket开发指南

    Wicket是一个开源的Java Web应用程序开发框架,它简化了Web应用程序的开发,通过将组件化方法应用于Web应用程序开发,允许开发者使用POJO(普通Java对象)来构建Web应用程序。它具有清晰的MVC(模型-视图-控制器)...

    apache-wicket-7

    Apache Wicket 是一个开源的Java Web应用程序框架,它专注于提供简单、声明式、以及组件化的Web开发模型。在“apache-wicket-7”这个主题中,我们主要关注的是Wicket框架的第七个主要版本,即7.0.0-M3。这个版本是一...

Global site tag (gtag.js) - Google Analytics