`

GWT使用JSNI與外部javascript整合

阅读更多
(1) 範例一:使用外部的javascript library 來做MD5

首先在html檔中引用javascript檔案:

<script language="javascript" src="http://pajhome.org.uk/crypt/md5/md5.js">
</script>

然後定義一個新class,並利用JSNI宣告member function:

public class MD5 {

public native static String getHexHMACMD5(String password, String challenge )
/*-{

return hex_hmac_md5(password, challenge)

}-*/;

}
注意:JSNI語法要用/*- 以及 -*/ 包裝起來。
上面的程式碼將js的一個function包裝(warp)成一般的java function,這樣就可以用下列方式來存取:
String hash = MD5.getHexHMACMD5( password.getText(), challenge );


(2) 範例二:Google Map - 使用外部的javascript library來建立user interface

同樣需要在HTML檔案中引用js檔:
<script src="http://maps.google.com/
maps?file=api&amp;v=2&amp;key=ABQIAAAACeDba0As0X6mwbIbUYWv-RTbvLQlFZmc2N8bgWI8YDPp5FEVBQUnvmfInJbOoyS2v-
qkssc36Z5MA" type="text/javascript"></script>


建立新的widget,並記得要繼承HTML widget

public class GoogleMap extends HTML{

private static int nextId = 0;
private JavaScriptObject map;

public GoogleMap()
{

String id = "map"+(++nextId);
setStyleName("gwtapps-GoogleMap"); /* 設定對應的CSS */
setHTML("
"); /* google map 需要div element,並設定為自訂的ID */
RootPanel.get().add( this ); /* 取得預設的Root Panel,加入自己 */
map = initMap(id); /* 取得javascript的map object,之後可以用來呼叫其他API */

}

public void setCenter( final double lon, final double lat )
{

setCenterImpl( map, lon, lat );

}

private native static JavaScriptObject initMap( String id )
/*-{

var map = new $wnd.GMap2( $doc.getElementById(id) ); /* 初始化GMap時將自訂ID當成參數 */
return map;

}-*/;

private native static void setCenterImpl(JavaScriptObject map, double lon, double lat )
/*-{

map.setCenter(new $wnd.GLatLng(lon, lat), 13);

}-*/;

}
分享到:
评论

相关推荐

    GWT-JSNI.pdf

    - JSNI 主要用于封装外部的 JavaScript 库,以便在 GWT 应用程序中使用。 - 示例:封装 jQuery 库的功能。 ```java native void useJQuery() /*-{ $wnd.$("div").css("color", "red"); }-*/; ``` 通过以上...

    gwt-jsni:用于 GWT 项目的 JSNI 实用程序

    gwt-jsni 用于 GWT 项目的 JSNI 实用程序。 用法 将依赖项添加到您的 Maven POM: &lt; groupId&gt;com.bytebybyte.gwt&lt;/ groupId&gt; &lt; artifactId&gt;jsni &lt; version&gt;1.0.0 &lt; scope&gt;provided 和你的 .gwt.xml 文件: ...

    smartgwt+mybatis+spring的整合

    SmartGwt、Mybatis与Spring的整合是企业级Java应用开发中的常见技术栈组合,这三种框架各有其专长,可以高效地构建出强大的后台系统。SmartGwt是一款基于GWT(Google Web Toolkit)的开源UI组件库,提供丰富的用户...

    GWT与Spring整合经典文章

    【GWT与Spring整合】是现代企业级应用开发中的一个重要话题。Google Web Toolkit (GWT) 是一个由Google开发的开源工具包,它允许开发者使用Java编写富互联网应用(RIA),然后自动将其编译为高效的JavaScript代码。...

    gwt和tomcat整合

    - GWT是Google推出的一款基于Java的开发工具,它允许开发者使用Java语言编写前端代码,然后通过编译器将其转换为高效的JavaScript。 - GWT的核心特性包括代码分割、异步调用、事件处理、UI绑定、以及自动优化为高...

    Ext-Gwt(GWT)开发实例(整合Spring +Hibernate)

    GWT 是 Google 提供的一个开源框架,它允许开发者使用 Java 语言来编写客户端的 Web 应用程序,然后编译成优化过的 JavaScript 代码,以实现高性能、跨浏览器的用户界面。GWT 提供了丰富的组件库、事件处理机制以及...

    gwt spring整合资源下载

    GWT是一个用于构建高性能、交互式JavaScript应用程序的Java开发框架,而Spring是一个广泛使用的Java企业级应用开发框架,尤其在服务端领域。 描述 "这是csdn上其他博主的资源,我把它整合起来" 提示这些文件可能...

    GWT安装和使用

    ### GWT安装与使用详解 #### 一、GWT特性简介 **1. 动态、可重用的UI组件** GWT 提供了一系列丰富的 UI 组件库,这些组件不仅功能强大而且高度可定制,使得开发者能够轻松地构建美观且交互性强的用户界面。每个 UI...

    gwt开发问题

    GWT(Google Web Toolkit)作为一款强大的Java到JavaScript编译工具,使得开发者能够使用熟悉的Java语言构建复杂的Web应用。然而,在实际开发过程中,GWT用户会遇到各种各样的问题,其中“如何在GWT应用中实现右键...

    关于 JSNI 调用 Java 方法时的 Type Signatures 说明

    当使用 JSNI 从 JavaScript 调用 Java 方法时,需要使用特定的语法。由于 JavaScript 是动态类型的,而 Java 是静态类型的,因此需要采用特殊的方式进行调用: - **语法**: ```javascript [instance-expr.]@...

    GWT揭秘(书签整理版)

    115提供的那个不知道怎么回事,我一直下不下来,后来在论坛找到了但是书签很乱,重新整理了一个书签,顺手删除了一个广告页。...12. GWT与Flex整合 13. 图片缓存 CSS Sprite 14. 本地化 15. 其他高级功能

    GWT整合Hibernate的一个小实例

    标题中的" GWT整合Hibernate的一个小实例 "是指将Google Web Toolkit(一种用于创建富客户端Web应用的Java开发框架)与Hibernate(一个流行的对象关系映射(ORM)框架)结合使用,以便在GWT应用中执行数据库交互。...

    GWTEXT 与Hibernate整合实例

    总的来说,GWTEXT 与Hibernate的整合实例是一个典型的Java企业级应用开发场景,它结合了文本处理的强大功能和数据库操作的便利性,对于处理大量文本数据的企业应用具有很高的实用价值。通过这个实例,开发者可以深入...

    GWT (GOOGLE WEB TOOLKIT)介绍PPT

    - **可扩展性**:GWT提供了JSNI(Java to JavaScript Native Interface),允许开发者在必要时直接编写JavaScript代码,增强了灵活性。 **4. GWT的主要组成部分** - **Java-to-JavaScript编译器**:负责将Java代码...

    gwt技术介绍

    5. 可扩展性,GWT提供了JSNI(JavaScript Native Interface)允许开发者在Java代码中嵌入JavaScript代码,提供了强大的自定义和扩展能力。 GWT的四大组成部分包括: 1. Java-to-JavaScript编译器,负责将Java代码...

    smartGwt、spring、Mybatis整合

    3. **Mybatis与Spring集成**:通过Spring的SqlSessionTemplate和MapperFactoryBean,可以将Mybatis的Mapper接口注入到Spring容器中,使得业务层可以直接使用Mapper接口执行数据库操作。 4. **分页查询**:Mybatis...

    struts2与gwt的整合

    主要用于构建企业级的Web应用程序,而GWT则是一种用于开发富互联网应用程序(Rich Internet Applications, RIA)的工具,它允许开发者使用Java语言编写前端代码,并自动编译为优化的JavaScript。 标题"Struts2与GWT...

    gwt+spring+hibernate

    Spring与GWT结合,可以在服务器端处理业务逻辑,通过GWT的Remote Procedure Call (RPC)机制与客户端进行通信。 3. **Hibernate ORM**: Hibernate 是一个流行的Java ORM(对象关系映射)框架,它允许开发者用Java...

Global site tag (gtag.js) - Google Analytics