- 浏览: 447696 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
建悦胡:
好文,必须顶
关于系统中使用多个PropertyPlaceholderConfigurer的配置 -
阿毛色色:
感谢!解决问题
关于系统中使用多个PropertyPlaceholderConfigurer的配置 -
fangwei06056115:
...
Maven中指定得AspectJ依赖无法添加得解决方案 -
abc3720:
Dashboard配置系统 是是商业的吗?如果不是发我看一下吗 ...
图示ExtJS商业智能的仪表盘配置系统 - (Season 1) -
maidou80:
的确有帮助 3Q
Ext表单中的combobox回填显示值问题
最近对Acegi的改造比较感兴趣,所以基于Acegi和ExtJS做了一个Ajax的权限系统,此篇只讲述Ext登录页面的前台实现。如对Acegi的Ajax实现感兴趣可以参考我另外的Blog。如对此篇内容有疑问,请留言。
此篇Blog将由三部分构成:
1. 实现的效果图
2. 实现关键点的简要说明
3. 完整的JS代码清单
如对代码部分感兴趣可以直接跳至此文结尾部分。
贴了几张效果图,毕竟看图说话比较方便哈。
Diagram01. 登录窗口的初始状态图
Diagram02. 悬停在"RememberMe"上显示的提示
Diagram03. 必输项空值时校验的错误信息
Diagram04. 点击“校验错误”时的详细信息提示
Diagram05. 用户名的ComboBox效果图,记录了此前登录的用户名
Diagram06. 登录页面整体效果
Diagram07. 点击“帮助”,显示的帮助信息,Json异步数据传递
好,图归正传,现在就实现代码的关键部分做一下简要的说明。
登录框的实现,参考了Ext的Advanced StatusBar Example,现在说明下单选框的实现。此部分代码为CheckBox的实现,开始时简单的使用了CheckBox布局,但在IE浏览器下,CheckBox居中显示了,而且很难调整,后改用checkboxgroup来实现,在boxLabel中添加了< img >标签用来实现悬停显示提示的功能。
{ xtype: 'checkboxgroup', fieldLabel: '记住我', height: 20, allowBlank: true, items: [{ boxLabel: ' <img style="height: 10px;" src="../images/platform/icon/question_small_no_border.png" ext:qtip="勾选后,5日内无需登录" />', itemCls : 'required', id: '_acegi_security_remember_me', name: '_acegi_security_remember_me', inputValue: 'true' }] }
以下是完整得JS代码
/** * login.js Power by YUI-EXT and JSON. * * @author seraph * @email seraph115@gmail.com */ var Login = { author: "Seraph", version: "0.1.0" }; var loginPanel; Ext.QuickTips.init(); Ext.onReady(function(){ var userNames = []; var store = new Ext.data.Store({ proxy: new Ext.data.MemoryProxy(userNames), reader: new Ext.data.ArrayReader({}, [{name: 'userName'}]) }); store.load(); var loginFormPanel = new Ext.FormPanel({ id: 'login-form', renderTo: Ext.getBody(), labelWidth: 55, frame: false, bodyStyle:'background-color: #DFE8F6; padding-top: 25px; padding-left: 20px; border: 0px solid;', defaults: { width: 230, anchor: '88%', allowBlank: false, selectOnFocus: true, msgTarget: 'side' }, defaultType: 'textfield', method: 'POST', bodyBorder: false, border: false, items: [ { xtype: 'combo', store: store, id: 'j_username', name: 'j_username', fieldLabel: '用户名', displayField: 'userName', valueField: 'userName', typeAhead: true, mode: 'local', triggerAction: 'all', selectOnFocus: true, allowBlank: false, blankText: '请输入用户名' },{ id: 'j_password', name: 'j_password', fieldLabel: '密 码', inputType: 'password', blankText: '请输入密码' },{ xtype: 'checkboxgroup', fieldLabel: '记住我', height: 20, allowBlank: true, items: [{ boxLabel: ' <img style="height: 10px;" src="../images/platform/icon/question_small_no_border.png" ext:qtip="勾选后,5日内无需登录" />', itemCls : 'required', id: '_acegi_security_remember_me', name: '_acegi_security_remember_me', inputValue: 'true' }] } ], buttons: [{ text:'登录', handler: function(){ if(loginFormPanel.getForm().isValid()){ var sb = Ext.getCmp('form-statusbar'); sb.showBusy('登录中...'); // loginFormPanel.getEl().mask(); var rememberMe = null; if($('_acegi_security_remember_me').checked) { rememberMe = $('_acegi_security_remember_me').value; } Ext.Ajax.request({ url: 'j_acegi_security_check', success: function(response) { var messager = response.responseText.evalJSON(); if(messager.success) { sb.setStatus({ text: '登录成功!', iconCls: '', clear: true }); // loginFormPanel.getEl().unmask(); location.href = messager.contents.targetUrl; } else { sb.setStatus({ text: '登录失败! 原因: ' + messager.contents.error, iconCls: '', clear: true }); userNames.push(new Array([messager.contents.key])); store.reload(); // loginFormPanel.getEl().unmask(); } }, params: {j_username: $('j_username').value, j_password: $('j_password').value, _acegi_security_remember_me: rememberMe, ajax: true} }); } } },{ text: '重置', handler: function(){ loginFormPanel.form.reset(); } }] }); loginPanel = new Ext.Window({ el: 'login-window', layout:'fit', title: 'BISP-登录', width: 300, height: 200, resizable : false, closeAction: 'hide', items: loginFormPanel, iconCls:'login-win', bbar: new Ext.StatusBar({ id: 'form-statusbar', defaultText: '待登录', plugins: new Ext.ux.ValidationStatus({form:'login-form'}) }) }); loginPanel.show(); }); var LoginPanel = { show : function() { loginPanel.show(); } }
评论
12 楼
hunnuxiaobo
2010-05-01
ExtJS还是蛮强大的!
11 楼
leiwuluan
2009-10-17
10 楼
Seraph115
2009-08-27
alymail 写道
var messager = response.responseText.evalJSON();
非常想知道是什么值,我这边是跳转后的页面html
非常想知道是什么值,我这边是跳转后的页面html
Messager是服务器返回的Java对象的json码,调用evalJSON()后json被转为javascript对象。
messager中写入了前台所需的响应,如跳转链接或错误消息
9 楼
alymail
2009-08-27
var messager = response.responseText.evalJSON();
非常想知道是什么值,我这边是跳转后的页面html
非常想知道是什么值,我这边是跳转后的页面html
8 楼
alymail
2009-08-27
lz的messager是什么值,我得到的是页面的html代码.
7 楼
east_java
2009-07-31
有源码下载就好了。。
6 楼
leon1509
2009-07-29
是不是用了prototype?
5 楼
kirk1127
2009-07-28
需要哪些js包能不能贴出来,最好能把源码共享下啊,呵呵
4 楼
Seraph115
2009-07-13
jamix 写道
url:'j_acegi_security_check'
这是什么地址?新人...好奇的问下...
这是什么地址?新人...好奇的问下...
j_acegi_security_check这个是Acegi安全框架中的保留字,这个框架中还有大概4、5个保留字,链接指向的是鉴权过滤器,就是用来验证身份的,Acegi会调用Spring中配置的Acegi的bean。
3 楼
jamix
2009-07-13
url:'j_acegi_security_check'
这是什么地址?新人...好奇的问下...
这是什么地址?新人...好奇的问下...
2 楼
jamix
2009-07-13
NR...顶了...那么多代码从那写起???看API吗???
JS基础不大好...还是要先去啃JS去..
JS基础不大好...还是要先去啃JS去..
1 楼
hemin108
2009-07-04
good ```
发表评论
-
Ext-3.1.0下组件中按钮居中问题的记要
2010-01-13 16:37 4165好久不写Ext的代码了,今天把ext-2.2替换成ext-3. ... -
Ext.Ajax教程,及Get和Post请求的使用拾遗
2009-08-31 14:46 10083感 于Ajax请求的使用为R ... -
图示ExtJS商业智能的仪表盘配置系统 - (Season 1)
2009-08-03 14:23 8946近些天在研究商业智能(BI)的系列产品,如[Analysis] ... -
扩展组件:GroupingView + PropertyGrid = ? (蒙牛版)
2009-06-24 17:39 2921原来: 牛奶 + 豆浆 = 豆奶 ... -
JavaScript反射读取Object属性
2009-06-09 18:12 4596最近需要用到JS的反射机制读取对象属性,类似Java中的自省, ... -
如何模仿iGoogle的界面(How to Mimic the iGoogle Interface)
2009-06-08 11:03 0在此篇文章中我将向你展示怎样创建自定义的窗口界面。完成的产品将 ... -
ExtJS中JSON数据传递乱码的解决
2009-05-20 11:21 4874服务器环境: Jetty 6.1.7 ExtJ ... -
主题:EXT新手建议:建立自己的工具箱(Toolkit)
2009-05-13 13:33 2312我认为学习EXT开发最好的方法是,在真正开发之前,掌握好高 ... -
基于Acegi实现的Ext权限系统 - 登录部分(含效果图)
2009-05-12 16:15 2663明天将会完成此文,Sorry -
Ext已验证Xtype列表
2009-05-06 11:18 1455This is the list of all valid x ... -
改进EXT提供的Portal组件,自定义最小化最大化按钮
2008-11-21 16:07 4536使用EXT来实现项目的UI,项目中的首页需要一个类似Porta ... -
Ext扩展TriggerField实现唯一值校验
2008-11-03 16:33 1804为了验证输入域的值为唯一值,扩展了Ext.form.Tirgg ... -
使用Ext的ajax请求程序范例
2008-10-09 15:58 1517This is the programming paradig ... -
基于Ext同步加载tree的实例
2008-09-26 14:10 4656基于Ext的TreeNode实现的tree有两种方式加载:一种 ... -
基于Ext异步加载tree的实例
2008-09-26 09:51 10158使用JS生成树形结构的菜单是基于J2EE的B/S系统常用的UI ... -
Grid中使用的Combobox
2008-08-28 18:13 4430Ext的Grid中使用combobox做为编辑控件时,遇到在c ... -
Ext表单中的combobox回填显示值问题
2008-08-28 17:36 10574缘由:在基于Ext构建的表单(form)中使用了Combobo ... -
如何将服务器返回的Json值填入到EXT的Form中 (双语版)
2008-08-27 13:49 3461如何将服务器返回的json数据自动回填到我的form里头去?想 ... -
Ext中初始化配置项iconCls的使用方法
2008-08-12 17:42 4124使用过Ext(http://www.extjs ... -
Ext中图标受损或图表显示不完整问题解决
2008-08-07 14:54 2920在Ext引用页面中加入红色部分的空白占位图标即可解决此问题。 ...
相关推荐
ExtJS是一个基于JavaScript的开源用户界面库,专为构建富客户端Web应用程序而设计。这个"extjs-2.2.zip"压缩包包含了ExtJS 2.2版本的所有资源,包括JavaScript库文件、API文档和其他可能的示例或工具。在这个版本中...
ExtJS是一个基于JavaScript的开源用户界面库,专为构建富客户端Web应用程序而设计。这个"extjs-2.2"开发框架是该库的一个特定版本,发布于2008年,它提供了一系列强大的组件和工具,使得开发者可以创建功能丰富的、...
EXTJS是一个基于JavaScript的前端框架,它提供了丰富的用户界面组件和强大的数据管理功能,常用于开发交互式Web应用程序。 【描述】提到的情况反映了在某些在线平台上获取资源时需要积分的机制。这种机制可能是为了...
ExtJS是一种基于JavaScript的开源富客户端框架,专用于构建交互式、数据驱动的Web应用程序。在2.2版本中,ExtJS提供了丰富的组件库、强大的数据管理机制以及优雅的用户界面设计,使得开发者能够轻松创建复杂的桌面级...
5. **Ajax通信**:EXTJS内置了Ajax通信功能,可以方便地与服务器进行异步数据交换,实现动态更新。 6. **可拖放功能**:EXTJS支持组件的拖放操作,可以创建高度交互的用户界面。 7. **主题定制**:EXTJS允许开发者...
Ext JS 2.2是一个基于浏览器的UI库,提供了大量的组件和工具,用于创建功能丰富的Web应用。这些组件包括表格、树形视图、菜单、窗口、表单、按钮、面板等,几乎涵盖了构建复杂前端界面所需的所有元素。通过使用Ext ...
ExtJS是一个基于JavaScript的开源用户界面库,专为构建富客户端Web应用程序而设计。这个"ext-2.2.rar"压缩包很可能包含了ExtJS库的2.2版本,这是一个在2007年发布的版本,当时它已经在Web开发领域积累了相当的用户...
这个开源网络硬盘系统_dogdisk.zip很可能是基于ExtJS 2.2版本开发的一个文件存储和管理应用,它允许用户通过Web界面进行文件的上传、下载、管理和分享。下面将详细介绍ExtJS 2.2的关键特性和在构建网络硬盘系统中的...
在本项目中,dogdisk是一个基于ExtJS 2.2实现的网络存储解决方案,它提供了文件的上传和下载功能,为用户提供了一种在线管理其数据的方式。 【描述】中的"[上传下载]ExtJS 2.2 开源网络硬盘系统_dogdisk"进一步强调...
在描述中提到,"oozie需要使用extjs2.2",这意味着在Oozie的Web界面开发中,可能使用了ExtJS 2.2来构建用户界面。ExtJS的组件化和丰富的UI库为Oozie提供了一个直观且易于操作的图形化工作流设计器。用户可以通过这些...
5. **Ajax支持**:EXTJS 2.2强化了Ajax技术的使用,通过异步请求实现页面的无刷新更新,提升了用户体验。同时,它提供了强大的数据封装和处理能力,方便与服务器进行数据交换。 6. **可扩展性和可定制性**:EXTJS ...
ExtJS是一个基于JavaScript的开源框架,专为构建富客户端Web应用程序而设计。2.2版本是该框架的一个重要里程碑,提供了丰富的组件库、强大的数据管理功能以及优雅的用户界面。以下是对`ExtJS 2.2 API`文档的详细解析...
总的来说,dogdisk是一个基于ExtJS 2.2的网络硬盘系统,结合Java后端提供文件管理服务。理解其工作原理和技术栈,有助于我们分析、维护或升级这样一个系统,或者从中学习到前端与后端交互、文件管理系统设计等方面的...
3. **数据管理与AJAX**:EXTJS2.2内置了强大的AJAX通信机制,能与后台Java服务无缝对接,实现异步数据交换。项目中,EXTJS通过Store与远程服务器进行数据交互,实现了动态加载、排序、过滤等功能,大大提高了用户...
### ExtJS-Ajax 相关知识点详解 #### 一、ExtJS 概述 ##### 1.1 架构特点 - **定义**: ExtJS 是一个功能强大的客户端 JavaScript 库,用于构建现代化、响应迅速的 Web 应用。它不仅支持 AJAX 技术,还能实现丰富的...
EXTJS 2.2docs CHM格式帮助文件是一款专为EXTJS 2.2框架设计的离线参考手册。EXTJS是一种基于JavaScript的开源UI库,用于构建富客户端Web应用程序。此CHM(Microsoft Compiled HTML Help)文件包含了EXTJS 2.2版本的...
4. **Ajax支持**:EXTJS内置了Ajax通信功能,可以轻松实现与服务器端的数据交互,支持JSON、XML等多种数据格式。 5. **图表和图形**:EXTJS 2.2虽然没有后来版本中的丰富图表,但依然提供了基本的绘图功能,可用于...