`

GWT 2.0 UiBinder 实现一个简单的分页.实现简单的CRUD.

    博客分类:
  • java
阅读更多



 简单的 分页实现. 当点击新增 和修改 的时候 弹出 窗口.

 

 


 

 

 

package com.toeoso.client.panel;

import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.SpanElement;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DecoratorPanel;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.Widget;
import com.toeoso.client.async.PageConf;

public abstract class BasePagePanel extends DecoratorPanel {

	@UiField
	static FlexTable dataFlexTable;
	@UiField
	Button addButton;
	@UiField
	Button firestButton;
	@UiField
	Button previousButton;
	@UiField
	Button nextButton;
	@UiField
	Button lastButton;
	@UiField
	static SpanElement pageInfo;

	private static BasePagePanelUiBinder uiBinder = GWT
			.create(BasePagePanelUiBinder.class);

	interface BasePagePanelUiBinder extends UiBinder<Widget, BasePagePanel> {
	}

	public BasePagePanel() {
		setWidget(uiBinder.createAndBindUi(this));
	}

	protected static PageConf conf = new PageConf();

	@UiHandler( { "firestButton", "previousButton", "nextButton", "lastButton" })
	public void pageOnClick(ClickEvent event) {/* 分页事件添加. */
		Object obj = event.getSource();
		if (firestButton == obj) {/* 第一页. */
			conf.getFirst();
			synTable();
		} else if (previousButton == obj) {/* 前一页 */
			conf.getPrevious();
			synTable();
		} else if (nextButton == obj) {/* 下一页 */
			conf.getNext();
			synTable();
		} else if (lastButton == obj) {/* 末页. */
			conf.getLast();
			synTable();
		}
		if (conf.hastPrevious()) {
			firestButton.setEnabled(true);
			previousButton.setEnabled(true);
		} else {
			firestButton.setEnabled(false);
			previousButton.setEnabled(false);
		}
		if (conf.hasNext()) {
			nextButton.setEnabled(true);
			lastButton.setEnabled(true);
		} else {
			nextButton.setEnabled(false);
			lastButton.setEnabled(false);
		}
	}
	
	/** 添加按钮.弹出一个form对话框. */
	@UiHandler("addButton")
	abstract public void addOnClick(ClickEvent event);
	
	abstract public void synTable();
	
}
 

 


 base分页代码.

 

 

package com.toeoso.client.panel;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.toeoso.client.async.PageData;
import com.toeoso.client.async.BlogContentService;
import com.toeoso.client.async.BlogContentServiceAsync;
import com.toeoso.client.module.BlogContent;

public class BlogContentListPanel extends BasePagePanel {

	private static final BlogContentServiceAsync blogContentServiceAsync = GWT
			.create(BlogContentService.class);
	public static BlogContentFormPanel blogContentFormPanel;

	public BlogContentListPanel() {
		conf.start = 0;
		conf.limit = 10;
		conf.end = conf.limit;
		synTable();
		blogContentFormPanel = new BlogContentFormPanel(this);
	}

	/** 添加按钮.弹出一个form对话框. */
	public void addOnClick(ClickEvent event) {
		blogContentFormPanel.cleanForm();
		blogContentFormPanel.center();
		blogContentFormPanel.show();
	}

	public void synTable() {
		dataFlexTable.removeAllRows();
		dataFlexTable.setText(1, 0, "加载中...");
		/** 设置加载提示..在ajax读取之后被替换. */
		blogContentServiceAsync.listBlogContent(conf,
				new AsyncCallback<PageData<BlogContent>>() {
					public void onSuccess(PageData<BlogContent> result) {
						/* 设置标题. */
						int titleNo = 0;
						
						dataFlexTable.setText(0, titleNo ++, "id");
						dataFlexTable.setText(0, titleNo ++, "title");
						dataFlexTable.setText(0, titleNo ++, "createDate");
						dataFlexTable.setText(0, titleNo ++, "blogType");
						dataFlexTable.setText(0, titleNo ++, "content");
						dataFlexTable.setText(0, titleNo ++, "userId");
						dataFlexTable.setText(0, titleNo ++, "descContent");
						dataFlexTable.setText(0, titleNo++, "操作");
						int j = 1;
						for (int i = 0; i < 10; ++i) {
							if (i < result.data.length) {
								int dataNo = 0;
								BlogContent blogContent = result.data[i];
								
								dataFlexTable.setHTML(j, dataNo++, "&nbsp;"
										+ blogContent.getId() + "");
								dataFlexTable.setHTML(j, dataNo++, "&nbsp;"
										+ blogContent.getTitle() + "");
								dataFlexTable.setHTML(j, dataNo++, "&nbsp;"
										+ blogContent.getCreateDate() + "");
								dataFlexTable.setHTML(j, dataNo++, "&nbsp;"
										+ blogContent.getBlogType() + "");
								dataFlexTable.setHTML(j, dataNo++, "&nbsp;"
										+ blogContent.getContent() + "");
								dataFlexTable.setHTML(j, dataNo++, "&nbsp;"
										+ blogContent.getUserId() + "");
								dataFlexTable.setHTML(j, dataNo++, "&nbsp;"
										+ blogContent.getDescContent() + "");
								/** 对每一行数据进行操作. */
								dataFlexTable.setWidget(j, dataNo++,
										addOperatePanel(blogContent.getId()));
							} else {
								int dataNo = 0;
								
								dataFlexTable.setHTML(j, dataNo++, "&nbsp;");
								dataFlexTable.setHTML(j, dataNo++, "&nbsp;");
								dataFlexTable.setHTML(j, dataNo++, "&nbsp;");
								dataFlexTable.setHTML(j, dataNo++, "&nbsp;");
								dataFlexTable.setHTML(j, dataNo++, "&nbsp;");
								dataFlexTable.setHTML(j, dataNo++, "&nbsp;");
								dataFlexTable.setHTML(j, dataNo++, "&nbsp;");
								dataFlexTable.setHTML(j, dataNo++, "&nbsp;");
							}
							j++;
						}
						conf.total = result.conf.total;
						pageInfo.setInnerHTML((conf.start + 1) + " - "
								+ Math.min(conf.end, conf.total) + " / " + conf.total);
					}

					public void onFailure(Throwable caught) {
					}
				});
	}

	/**
	 * 添加操作按钮.
	 */
	private static Widget addOperatePanel(final Long id) {
		HTML editButton = new HTML("修改");
		editButton.addClickHandler(new ClickHandler() {
			public void onClick(ClickEvent event) {
				blogContentServiceAsync.getBlogContentById(id,
						new AsyncCallback<BlogContent>() {

							public void onSuccess(BlogContent result) {
								blogContentFormPanel.setFormValue(result);
								blogContentFormPanel.center();
								blogContentFormPanel.show();
							}

							public void onFailure(Throwable caught) {
							}
						});
			}
		});
		editButton.setStyleName("htmlOperate");

		HTML deleteButton = new HTML("删除");
		deleteButton.addClickHandler(new ClickHandler() {

			public void onClick(ClickEvent event) {
				blogContentServiceAsync.deleteBlogContentById(id,
						new AsyncCallback<Void>() {
							public void onSuccess(Void result) {
								/** 删除之后table刷新下数据. */
								blogContentFormPanel.blogContentListPanel.synTable();
							}

							public void onFailure(Throwable caught) {
							}
						});
			}
		});
		deleteButton.setStyleName("htmlOperate");
		HorizontalPanel panel = new HorizontalPanel();
		panel.setStyleName("operatePanel");
		panel.add(editButton);
		panel.add(deleteButton);
		return panel;
	}

}

 

 分页代码.

 

 

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
	xmlns:g="urn:import:com.google.gwt.user.client.ui">
	<g:VerticalPanel>
		<g:HTMLPanel>
			<g:Hidden ui:field="id" />
			
			<div style="text-align: right;">
				标题
				<g:TextBox ui:field="title"/>
			</div>
			<div style="text-align: right;">
				创建时间
				<g:TextBox ui:field="createDate"/>
			</div>
			<div style="text-align: right;">
				类型
				<g:TextBox ui:field="blogType"/>
			</div>
			<div style="text-align: right;">
				内容
				<g:TextBox ui:field="content"/>
			</div>
			<div style="text-align: right;">
				用户Id
				<g:TextBox ui:field="userId"/>
			</div>
			<div style="text-align: right;">
				描述
				<g:TextBox ui:field="descContent"/>
			</div>
		</g:HTMLPanel>
		<g:HTMLPanel>
			<div style="float: right;">
				<g:Button text="保存" ui:field="saveButton" />
				<g:Button text="关闭" ui:field="closeButton" />
			</div>
		</g:HTMLPanel>
	</g:VerticalPanel>
</ui:UiBinder>

 

 弹出窗口.代码

 

javaeye 在上传 zip 文件 的时候 服务器报错.

 


所以 源代码 没有上传成功. 

 

等什么时候服务器 好使用了. 在上传.

 

 

从简单的开始.慢慢的前进 这样 稳健 而 扎实.

  • 大小: 8.4 KB
  • 大小: 8.8 KB
  • 大小: 4.3 KB
7
0
分享到:
评论

相关推荐

    SmartGWT2.0 API

    总的来说,SmartGWT 2.0 API 是一个强大的工具,它的出现使得GWT开发者能够快速创建出美观且功能丰富的Web应用,特别适合处理大数据量和复杂交互的场景。通过利用其组件、数据绑定、性能优化等特性,开发者可以更...

    gwt2.0-api

    gwt2.0的api文档,chm格式的,方便大家查询。

    SmartGWT 2.0 API.zip

    SmartGWT 2.0是该框架的一个早期版本,对初学者来说是一个很好的起点,因为它包含了详细的API文档和示例。 在提供的压缩包"SmartGWT 2.0 API.zip"中,包含了一系列文件,这些文件对于理解和使用SmartGWT 2.0 API至...

    smartgwt-2.0API.CHM

    smartgwt-2.0API.CHM 2009年12月18日 ... SmartGWT 2.0发布下载了

    Apress.Pro.Web.2.0.Application.Development.with.GWT.May.2008

    书中通过一个深入的案例研究来介绍如何构建功能丰富、用户友好的Web 2.0网站,并且涵盖了GWT 1.5版本的相关特性。 #### GWT简介 Google Web Toolkit (GWT) 是一个开源的Java工具包,用于构建高性能的Web客户端应用...

    GWT2.0RC1.chm

    GWT2.0类库详细结构图,是学习GWT的首选资料

    gwt2.0版本

    在GWT 2.0版本中,它为开发者提供了丰富的功能和改进,使得JavaScript编程变得更加简单,同时提高了应用程序的性能和用户体验。 GWT的核心理念是允许开发者使用Java语言来编写前端代码,然后通过编译器将其转换为...

    Ext GWT 2.0: Beginner's Guide

    Ext GWT(GWT eXtension)是Google Web Toolkit(GWT)的一个扩展库,它为GWT添加了更多的组件和功能,使得开发者能够创建出更富交互性和美观的用户界面。在2.0版本中,Ext GWT引入了许多新特性,提升了性能和可用性...

    Ext GWT 2.0, Beginner's Guide

    Ext GWT,全称EXT Java Widget Toolkit,是Sencha公司开发的一个用于构建富客户端Web应用程序的开源库,它基于Google的GWT(Google Web Toolkit)技术。这本书将引导读者逐步学习如何利用Ext GWT创建功能丰富的、...

    Ext GWT 2.0 Beginner’s Guide

    Ext GWT是基于Google Web Toolkit(GWT)的一个高级用户界面库。GWT本身是一种用于创建和优化复杂Web应用程序的开发工具包,它允许开发者用Java编写代码,然后将其转换成高度优化的浏览器JavaScript。Ext GWT在GWT的...

    Ext GWT 2.0 Beginner's Guide

    Ext GWT 是一个基于 Google Web Toolkit (GWT) 的高级用户界面库。它提供了一套丰富的UI组件集合,以及一系列功能强大的工具,使得开发者能够创建出高度交互且美观的Web应用程序。相比于传统的JavaScript框架,Ext ...

    GWT例子中的分页研究.

    4. **分页控件**:在用户界面上,通常会显示一个分页导航栏,允许用户切换页码。这可以通过自定义的GWT组件实现,如`Pager`,或者使用第三方库,如GWT Elemental的`Elemental2.Pagination`。 5. **数据展示**:一旦...

    gwt-windows-1.4.60.zip

    标题中的"gwt-windows-1.4.60.zip"可能是一个GWT的发行版本,适用于Windows操作系统,版本号为1.4.60。这个压缩包可能包含了GWT库的所有组件,包括开发者需要的JAR文件、文档、示例代码以及其他必要的资源,使得...

    gxt-2.2.4 EXT GWT

    gxt-2.2.4 EXT GWT Note : Ext GWT 2.X requires GWT 1.7+ or GWT 2.0+ (any build ending in "-gwt2.zip").

    org.jresearch.commons.gwt.utils.shared-1.0.45.zip

    标题 "org.jresearch.commons.gwt.utils.shared-1.0.45.zip" 提供的信息表明,这是一个与Java开发相关的开源项目,具体来说是`org.jresearch`组织下的一个 Commons GWT (Google Web Toolkit) 工具集。GWT 是一个用于...

    smartgwt 分页grid

    2. **实现分页**:SmartGWT提供了一个名为`VGridPager`的分页工具条,它可以轻松地添加到Grid下方。通过设置`VGridPager`的属性,如每页显示的记录数(pageSize),我们可以实现基本的分页功能。分页操作由Grid的`...

    cypal.studio.for.gwt-2.alpha

    总结来说,cypal.studio.for.gwt-2.alpha是一个针对GWT 2.0的Eclipse插件,通过集成到Eclipse 3.4+环境中,提供了UI设计、代码生成和调试等全面的功能。通过这两个关键的JAR文件,我们可以推测出这款插件致力于简化...

    Spring2.5 and GWT 集成 --实现分页查询功能

    Cypal Studio for GWT (Eclipse 的一个插件) 实现原理:通过GWT的RPC来调用Spring 传过来的服务器端数据 注意:需要的jar包 * gwt-user.jar * gwt-servlet.jar * mysql-connectot-java-3.1.12.jar * spring....

    gwt学习资料和实例项目

    **GWT(Google Web Toolkit)** 是一个由Google开发的开放源代码工具包,用于构建高性能的、基于JavaScript的Web应用程序。它允许开发者使用Java语言编写客户端代码,并自动将其编译为优化过的JavaScript,从而提高...

Global site tag (gtag.js) - Google Analytics