`
tailorcai
  • 浏览: 92014 次
  • 性别: 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范例(级联选择框)

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

    Ajax-jaulp-wicket.zip

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

    wicket常用控件使用方法

    Wicket开发和.Net很相似,在html页面中对控件做wicket的声明,然后在java代码中便可以生成一控件。控件的值或内容都以Model存放,所以当修改其值或内容时都是在修改Model中的对象,取值时只需要取到Model中对象再...

    wicket 基础知识培训

    wicket 基础知识培训,主要是讲解wicket入门知识,通过和struts比较来进行讲解。

    wicket基础控件

    wicket基础控件,生成的源码,比较小

    JapanCuccok:我的第一个Wicket项目在Google AppEngine上运行。 基本上是一个简单的网上商店

    我的第一个Wicket项目在Google AppEngine上运行。 基本上是一个简单的网上商店。 如果您有兴趣,请访问下面的链接,请: : 建立步骤: 先决条件:请确保您已安装以下程序。 还要确保您具有这些程序的完全相同的...

    Apache Wicket Cookbook.pdf

    Chapter 1: Validating and Converting User Input 7 Introduction 7 Performing form-level custom validation 7 Creating a custom validator 12 Composing multiple validators into a single reusable ...

    wicket开发指南

    wicket开发指南,很简洁,可以看看,对于wicket框架的学习很有帮助

    Wicket

    NULL 博文链接:https://fengyunxiao.iteye.com/blog/684835

    wicket:Apache Wicket-基于组件的Java Web框架

    Apache Wicket是一个开源的,基于Java,基于组件的Web应用程序框架。 通过适当的标记/逻辑分离,POJO数据模型以及令人耳目一新的XML缺乏,Apache Wicket使开发Web应用程序变得简单而又愉快。 交换样板,复杂的调试...

    wicket国际化例子

    wicket国际化例子 含有wicket:message StringResourceModel 等读取properties资源文件的代码示例

    Wicket 8.X开发文档(中文翻译+英文原版)

    3.我为什么要学习Wicket? 3.1。我们都喜欢意大利面:-) ... 3.2。面向组件的框架 - 概述 3.3。面向组件的Web开发框架的优点 3.4。Wicket与其他面向组件的框架相比 威克特说“你好世界!” 4.1。Wicket分发和模块 4.2...

    wicket指南

    wicket开发指南,wicket 新型的web开发框架,现以能无逢支持jsr168/286

    Wicket开发指南.pdf

    Wicket开发指南 Wicket开发指南 Wicket开发指南

    wicket-js:wicket-js 使在 Wicket 组件和行为中编写和处理自定义 JavaScript 和 jQuery 变得容易

    它有助于将 Wicket Ajax Behavior 侦听器与实际客户端 UI 功能分开,同时保持与 Wicket 组件的耦合。 它提供了一个(基本的),允许您在 Java 中构建 JavaScript 和 jQuery 表达式。 例子 使用 wicket-js,您可以...

    《Wicket开发指南一书》PDF版本下载

    Wicket前生后世篇 Wicket是什么?简单点说,它就是一个基于...但是这个事件对我的第一感觉就是晕,第二感觉就是特别的晕,虽然目前Java世界的Web框架一通混战,但这样一个联盟,所给出的东西很可能是第二个EJB。

    wicket_examples:wicket_examples

    About Wicket About Basic Wicket Hello World from

    wicket开发详解

    开发详解想写一份这样的Wicket 文档,源于2005 年中,那是用Wicket1.0 完成了第一个项目以 后的想法,觉得如此好的一个Web 框架,应该让更多的开发人员了解和使用它。因此在 05 年9 月份的时候开始了这份文档的初稿...

    wicket文档

    wicket学习文档

    wicket 开发指南

    Wicket 目前最新的版本是1.2.2 版,已经支持了AJAX,但感觉这个框架的发展时间毕 竟还是短了一点,尽管设计思想很不错,但还是有许多问题存在的,包括控件的数量,BUG 较多等,希望2006 年它可以尽快的成熟起来。

Global site tag (gtag.js) - Google Analytics