Posts tagged: gwt

gilead是什么?

gilead是什么 gilead是个java api,用于将hibernate对象的clone和merge。网址是: http://noon.gilead.free.fr/gilead/ 官方网站的说明是: Gilead让你无痛苦的传递持久对象到JVM外,比如GWT, Web-Services, Flex和Google AppEngine等。 这个图比较说明问题,你可以把java server这端的对象树看作hibernate生成的持久对象。灰色的节点表示延时加载的对象。经过桔黄色的gilead工具,可以克隆(clone)成延时加载对象赋值为null的对象图,这样再传递到比如gwt rpc,就不会出现LazyInitialisationException了。    发送文章为PDF   

星期三 四月 21st, 2010 in , , , , | No Comments »

gwt通过RPC方式使用hibernate

以前,使用gwt开发企业应用系统。多人一起工作。采用的是json作为服务器端和gwt浏览器端通信。 主要考虑的是,hibernate管理的实体对象,在脱离JVM可能会有一些问题,比如lazy loading等。 现在开发的是服务器端的小应用程序,需要简化开发技术,提供生产效率。计划取消掉spring,服务器端直接使用hibernate。 用最新的hibernate 3.5.1-final版本写了个简单的代码。 日志引用gilead是什么?    发送文章为PDF   

星期三 四月 21st, 2010 in , , | No Comments »

gwt实现相邻树条目(TreeItem)的自动收缩

gwt showcase中的树条目,无法实现自动的收缩相邻的树条目。比如: 选择了Basic Text,可是上面的Lists and Menus的树条目还是打开的。如果项目的树很长,可能会影响用户体验。 因此,实现了一个支持自动收缩的方案。 如果选择用户管理里面的条目,则系统管理将自动收缩。    发送文章为PDF   

星期四 二月 11th, 2010 in , , | No Comments »

gwt布局的居中处理

先前写的videos项目,所有Panel都是从浏览器左上角开始的。对话框都是居中的,但是因为Panel,显得很别扭。 使用DockPanel进行居中处理,基本思路是,屏幕左边是WEST,屏幕中间是CENTER,屏幕右边是EAST,将项目的Panel填到DockPanel的CENTER。 通过Window方法获取到浏览器的宽度,如果超过640px,则宽度是640,如果宽度小于640,则充满整个宽度。 如果宽度不小于640,则左(WEST)右(EAST)各占去多出的1/2宽度。 这样就实现了居中。见: if (Window.getClientWidth() > 640) {     this.panel.setWidth("640px");     int width = (Window.getClientWidth() – 640) / 2;     this.leftPanel.setWidth(width + "px");     this.rightPanel.setWidth(width + "px"); } else {     this.panel.setWidth(Window.getClientWidth() + "px");     this.leftPanel.setWidth(0 + "px");     this.rightPanel.setWidth(0 + "px"); }      发送文章为PDF   

星期一 二月 1st, 2010 in , , , | No Comments »

gwt和spring security的集成方法

gwt如何与spring security集成,这是个问题。如果能够合理的集成,可以实现很多需要认证和授权的场合。 比如在访问需要授权的地方,显示登录界面: 登录后可以看到授权的界面:    发送文章为PDF   

星期一 二月 1st, 2010 in , , , , | No Comments »

gwt编写最简单的flash播放器

在gwt上编写视频播放,可以使用bst项目,见: http://oss.bramosystems.com/bst-player/ 使用bst,编写了一个最简单的flash播放器,代码很简单: public void onModuleLoad() {     SimplePanel panel = new SimplePanel();     AbstractMediaPlayer player = null;     try {         player = new FlashMediaPlayer(                 "http://marshal.easymorse.com/videos/test.mp4");         panel.setWidget(player);     } catch (PluginNotFoundException e) {         e.printStackTrace();     } catch (PluginVersionException e) {         e.printStackTrace();     } catch (LoadException e) {         e.printStackTrace();     [...]

星期二 一月 26th, 2010 in , , , , , | No Comments »

gwt使用html5的Geolocation api

html5提供geolocation api,用于获取浏览器所处地理位置相关信息。 通过pc上面的chrome/firefox访问获得的经纬度,发现还是很准的。 获得经纬度,可以通过: http://maps.google.com/ 在输入框中输入:纬度,精度,就可以得到对应的卫星图或者地图。 代码编写也很容易,这里使用了gwt,其实即使不使用gwt,写javascript也很简单。 这里使用的gwt模块,文档地址在: http://code.google.com/p/gwt-mobile-webkit/wiki/GeolocationApi 下载地址: http://code.google.com/p/gwt-mobile-webkit/downloads/list 选择gwt-html5-geolocation-xxx.tar.gz。解压缩,将其中的.jar文件部署到gwt项目的classpath下。 在模块的配置文件中,增加: <inherits name="com.google.code.gwt.geolocation.Html5Geolocation" /> 代码: public void onModuleLoad() {     if (Geolocation.isSupported()) {         Geolocation geo = Geolocation.getGeolocation();         if (geo != null) {             geo.getCurrentPosition(new PositionCallback() {                 @Override                 public void onFailure(PositionError error) {                     Window.alert("error");                 }                 @Override                 [...]

weapon项目增加文件上传功能

为weapon项目增加了图片上传功能。 这需要服务器端(Spring MVC)和客户端(GWT)两部分程序。    发送文章为PDF   

星期四 一月 21st, 2010 in , , , , , | No Comments »

用简单办法解决gwt不能动态加载图片问题

在gwt框架内找了很多办法,都不能解决图片的动态加载问题。当然刷新页面可以解决,但这相当于重新加载gwt模块了。 gwt使用Image类加载图片,使用url作为参数,结果就是相同的url只加载一次,而后不再向服务器发起请求。这样即使服务器端设置no cache等特性也无济于事。 解决办法,是在flash和ajax应用中普遍使用的办法,即给请求加时间戳。这样每次请求都不一样,gwt就必须再次发起get请求了。 代码: this.image = new Image("/getImage.do?id=" + weapon.getId()+"&time="+System.currentTimeMillis());    发送文章为PDF   

星期四 一月 21st, 2010 in , , , | No Comments »

weapon项目服务器端动态加载图片

weapon项目已经可以加载图片了,见weapon项目增加图片的显示。但是静态的。 使用spring mvc动态加载图片文件,然后将流写入到Servlet输出流中。 代码如下: @RequestMapping("/getImage.do") public void getImage(@RequestParam("id") String id,         HttpServletRequest request, HttpServletResponse response) {     response.setHeader("Pragma", "No-cache");     response.setHeader("Cache-Control", "no-cache");     response.setDateHeader("Expires", 0);     if (id == null || id.isEmpty()) {         id = "1";     }     try {         OutputStream outputStream = response.getOutputStream();         BufferedInputStream inputStream = new BufferedInputStream(                 new [...]

星期四 一月 21st, 2010 in , , , , | No Comments »