2008-05-10

Gwt-Ext学习笔记之基础篇

关键字: gwt ext google web toolkit cypal studio

 

 

Gwt-Ext学习笔记之基础篇

一、 安装 Cypal Studio工具

a.       下载 Cypal Studio http://code.google.com/p/cypal-studio/ ,解压后 Copy Eclipse目录下。

b.      配置 GWT Home目录,打开 Eclipse Window—Preferences—Cypal Studio 选择 Gwt的目录。

 

二、 建立一个名为 gwtext GWT项目

a.       新建一个动态 web项目, File—New—Other—Web—Dynamic Web Project,在 Configurations中选择 Cypal Studio GWT Project,其他的默认即可。

三、 创建 Module模型

a.       gwtext项目上点击右键 New—Other—Cypal Studio—Module,输入包名 org.gwtext.julycn,类名 Register

b.      org.gwtext.julycn包下面生产 client包、 server包、 public目录和 Register.gwt.xml Register.html

c.       Register.java onModuleLoad() 方法中加入 Window.alert("This is my first Gwt Demo!");

 

/**
 * @author 七月天
 *
 */

public class Register implements EntryPoint {
	public void onModuleLoad() {
			Window.alert("This is my first Gwt Demo!");
		}
}
 

d.      选择 Run—Open Run Dialog—Gwt Hosted Mode Application,选择 New,新建一个运行实例 gwtext, Project中选择 gwtext Module会自动选择所要运行的模型类。

e.      点击运行,会弹出 Google Web Toolkit运行窗口。

四、 配置 GWT-Ext环境

a.       下载 gwt-ext ext 资源

b.      加入 gwtext gwtext.jar ext资源

                                                               i.      gwtext-2.0.3目录下的 gwtext.jar加入到项目中。

                                                             ii.      在项目的 public目录中新建 js文件夹,然后把 ext-2.1目录下的 adapter目录、 resources目录和 ext-all.js ext-core.js导入到 js文件夹下。

c.       修改 HTML宿主页面 Register.html和模块配置文件 Register.gwt.xml

                                                               i.      Register.html文件中加入

 

<link href="js/resources/css/ext-all.css" rel="stylesheet" type="text/css"/>

<script type="text/javascript" src="js/adapter/ext/ext-base.js"></script>

<script type="text/javascript" src="js/ext-all.js"></script>
 

                                                             ii.      Register.gwt.xml文件中加入

<inherits name="com.gwtext.GwtExt"/>
 

五、 运行 GWT-Ext实例

a.       修改 Register.java模型文件 ,内容如下:

 

/**
 * @author 七月天
 *
 */
public class Register implements EntryPoint{
	public void onModuleLoad() {
		createComponents();
	}

	private void createComponents() {
		final FormPanel frm = new FormPanel();
		frm.setDraggable(true);
		frm.setWidth(300);
		frm.setTitle("用户注册");
		frm.setPaddings(25);

		TextField txtUsername = new TextField("用户名", "username");
		TextField txtPassword = new TextField("密码", "password");
		TextField txtEmail = new TextField("邮箱", "email");
		TextField txtPhone = new TextField("电话", "phone");

		txtUsername.setRegex("^[a-zA-Z]*$");
		txtUsername.setRegexText("用户名必须为字母!");
		txtUsername.setAllowBlank(false);

		txtPassword.setPassword(true);
		txtPassword.setRegex("^[a-zA-Z]*$");
		txtPassword.setRegexText("密码必须为字母!");
		txtPassword.setAllowBlank(false);

		txtEmail.setVtype(VType.EMAIL);
		txtEmail.setVtypeText("请输入合法的邮箱地址!");
		txtEmail.setAllowBlank(false);

		txtPhone.setRegex("^\\d*$");
		txtPhone.setRegexText("电话必须为数字!");
		txtPhone.setAllowBlank(false);

		frm.add(txtUsername);
		frm.add(txtPassword);
		frm.add(txtEmail);
		frm.add(txtPhone);

		Panel buttonPanel = new Panel();
		buttonPanel.setLayout(new HorizontalLayout(10));

		
		Button btnSave = new Button("保存");
		btnSave.addListener(new ButtonListenerAdapter() {
			public void onClick(Button button, EventObject e) {
				if (frm.getForm().isValid()) {
					MessageBox.alert("成功","信息提交成功!");
				} else {
					MessageBox.alert("错误","请验证输入的信息是否正确!");
				}
			}
		});

		Button btnClear = new Button("取消");
		btnClear.addListener(new ButtonListenerAdapter() {
			public void onClick(Button button, EventObject e) {
				MessageBox.alert("取消", "注册信息保存失败!");
			}
		});

		buttonPanel.add(btnSave);
		buttonPanel.add(btnClear);

		frm.add(buttonPanel);

		RootPanel.get().add(frm);
	}
}
 

b.      运行效果;点击如下按钮,查看效果

 

备注:本文只是一个简单的 Demo ,如果有问题,请跟帖。想要更多的人帮助你,请先帮助更多的人

评论
yangf0704 23 小时前   回复
请问两个TextField的问题:
1 好像它的冒号是自动加上的,如果我想去掉应该怎么办呢?
2 为什么我的TextField弄出来,field和文本框不在一行,而是label在上,文本框在下呢?
谢谢!
leofantasy 2008-09-26   回复
问个问题,我项目在GWT hosted model下运行正常,打包成WAR文件后,就缺这缺那功能。而且还有报错:'this.proxy' is null or not an object.
很多地方都是这个错。
还有在GWT服务端可以用Hibernate么?
还是一定要用hibernate4gwt?
julycn 2008-09-09   回复
感谢[北京]Polly的补充

[ERROR] Failure to load module 'org.gwtext.julycn.Register'
java.lang.NoSuchMethodError: org.eclipse.jdt.internal.compiler.Compiler.<init>

这是因为gwt的compiler和tomcat的servlet compiler冲突。

右键选择你的工程,选Properties,然后java Build path,然后libraries,选中tomcat相关的库,remove,就可以正常运行了。 
yanghaiskys 2008-09-02   回复
public void onClick(Button button, EventObject e) {  
                if (frm.getForm().isValid()) {  
                    MessageBox.alert("成功","信息提交成功!");  
                } else {  
                    MessageBox.alert("错误","请验证输入的信息是否正确!");  
                }  
            }  
这个区域怎么报错,它在哪个包下
liuruijie868686 2008-08-19   回复
楼主您好,所有步骤都按照您的来做,但是老是出异常!我做了三次了,一直是这个错误,希望楼主能指正,谢谢!
howdai 2008-08-05   回复
环境:
gwt-windows-1.5.0
J2SDK 1.6
TOMCAT 6.0
Eclipse WTP Platform 3.4.0

只是测试基本的
Hello
跟sample里的一样

报错:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory
at com.google.gwt.dev.shell.tomcat.EmbeddedTomcatServer.<init>(EmbeddedTomcatServer.java:190)
at com.google.gwt.dev.shell.tomcat.EmbeddedTomcatServer.start(EmbeddedTomcatServer.java:62)
at com.google.gwt.dev.GWTShell.startUp(GWTShell.java:742)
at com.google.gwt.dev.GWTShell.run(GWTShell.java:539)
at com.google.gwt.dev.GWTShell.main(GWTShell.java:321)

请问...这是什么问题?
有人同问题吗?
============================

问题已解决

把Bulid path的Tomcat 6 移除即可
shanshan1983 2008-08-01   回复
请教一下,我按照实例做了一遍,提示无法加载模块,请指教...谢谢!!
bh_nesta 2008-07-24   回复
请问:为什么我的没有这项出来呢?

在 Configurations中选择 Cypal Studio GWT
kodak2005 2008-07-10   回复
Cypal Studio解压后有三个jar文件,放到eclipse哪个目录下啊,我直接放到eclipse下找不到插件,放到eclipse\plugins下也找不到插件,怎么回事噢!对eclipse版本有要求吗?我eclipse3.3的版本
ddh9504 2008-07-08   回复
ddh9504 写道
但我有个问题:


就是怎么能直接在tomcat里面跑呢?需要怎样调整目录结构?




谢谢,我自己已经明白了
cypal.studio.for.gwt

这个插件开发非常方便,部署到tomcat一键搞定(就是在创建工程时指定runtime即可)

其他照常运行,谢谢!!
ddh9504 2008-07-08   回复
但我有个问题:


就是怎么能直接在tomcat里面跑呢?需要怎样调整目录结构?
ddh9504 2008-07-08   回复
timer1983 写道
我的报这个错误
java.lang.NoClassDefFoundError: com/google/gwt/dev/GWTShell
Exception in thread "main"

PS:在myeclipse难道不行? 给个理由先



NO,不是不行,你操作有点失误。
就在这一步:
配置 GWT Home目录,打开 Eclipse的 Window—Preferences—Cypal Studio 选择 Gwt的目录。

GWT目录放的应该是gwt-windows-1.4.62.zip下面的文件,懒一点就是全部拿过去。

按照这样去做就没有问题了
ddh9504 2008-07-08   回复
yuanzhaoabc 写道
我在eclipse3.2或3.3中集成了GWT-EXT 为何在Window—Preferences显示不出来呢?




Eclipse找不到插件怎么办?
有时启动Eclipse未加载插件,解决方法很多,总结一下:
  
  a 、 删除整个目录/eclipse/configuration/org.eclipse.update/,重启Eclipse
  
  b 、在启动Eclipse时带上 -clean参数
  如:d:\eclipse\eclipse.exe -clean
  
  c 、 如果Eclipse启动找不到插件了,解决办法: 在/configuration/config.ini文件中加入一行
  osgi.checkConfiguration=true
  这样它会寻找并安装插件,找到后可以把那行再注释掉,这样以后每次启动就不会因寻找插件而显得慢了。
ddh9504 2008-07-08   回复
你的eclipse版本多少?我“配置 GWT Home目录,打开 Eclipse的 Window—Preferences—Cypal Studio 选择 Gwt的目录。”这一步实现不了呀,怎么办?
leewon 2008-07-07   回复
楼主照你的方法做了,可是google的窗体报一下错误好像是jar文件的问题
[ERROR] Errors in 'jar:file:/D:/workspace/gwtext/WebContent/WEB-INF/lib/gwtext.jar!/com/gwtext/client/util/JavaScriptObjectHelper.java'
davidcen 2008-07-02   回复
引用

liutianhao 前天
楼主,要是我要在基础篇里的那个例子中点击保存页面,然后跳转到你讲的中级篇里的显示数据的页面,该怎么做呢??
谢谢


我用一个jsni来解决这个问题,不知道大家还有没有更好的方法?
native void jumpUrl() /*-{ 
        $wnd.location.href="../com.xxx.sample.BasicComboBoxSample/BasicComboBoxSample.html";
    }-*/;

在onSuccess内调用.
liutianhao 2008-06-30   回复
楼主,要是我要在基础篇里的那个例子中点击保存页面,然后跳转到你讲的中级篇里的显示数据的页面,该怎么做呢??
谢谢
liutianhao 2008-06-30   回复
假如我要是点击保存然后页面跳转到显示页面(也就是你中级篇页面),那该改什么地方呢?
yuanzhaoabc 2008-06-17   回复
我在eclipse3.2或3.3中集成了GWT-EXT 为何在Window—Preferences显示不出来呢?
fxbird 2008-06-15   回复
我把你的代码copy进到我的类,只是名字不一样,gwtext是2.04,ext是2.1,运行时报gwtext只支持ext2.02,这是怎么回事?
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

julycn
搜索本博客
我的相册
E09a394b-4b16-328b-8e1d-9ef916ee23c2-thumb
seam.jpg
共 13 张
存档
最新评论