浏览 1025 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2008-05-30
最近在使用Ext的时候,使用Acegi,发现提交的时候有问题,通过查看Ext doc,发现FormPanel默认使用的不是传统方式发送登陆请求的,根据文档,需要重写submit方法,很简单,贴上来希望对后来的朋友有所帮助。
/**
* 用户登陆页面
*/
com.faceye.compoents.core.security.LoginForm = {
init : function() {
var container = com.faceye.ui.Container.init();
var centerContainer = container
.getComponent('default-center-body-container');
var loginForm = new Ext.form.FormPanel({
labelWidth : 80,
// url:'/faceye/j_acegi_security_check',
frame : true,
title : '用户登陆',
// el : 'login-form',
// title: 'Simple Form',
bodyStyle : 'padding:5px 5px 0',
width : 370,
// defaults: {width: 210},
// renderTo : centerContainer,
layout : 'form',
onSubmit : Ext.emptyFn,
defaultType : 'textfield',
submit : function() {
loginForm.getForm().getEl().dom.action = BP
+ 'j_acegi_security_check';
loginForm.getForm().getEl().dom.submit();
},
items : [{
fieldLabel : '帐户',
name : 'j_username',
width : 200,
allowBlank : false,
vtypeText : '帐户不能为空',
tabIndex : 1
}, {
fieldLabel : '密码',
width : 200,
name : 'j_password',
inputType : 'password',
tabIndex : 2
}],
buttons : [{
text : '登陆',
type : 'submit',
tooltip : 'Login',
clickEvent : 'click',
handler : function() {
loginForm.getForm().submit({
url : BP+'j_acegi_security_check',
method : 'POST',
waitMsg : 'Processing the form now',
waitTitle : 'Member Login',
success : function(form, action) {
Ext.Msg.alert('用户登陆', '登陆成功');
},
failiure : function(form, action) {
if (action.failureType == 'server') {
var obj = Ext.util.JSON
.decode(action.response.responseText);
Ext.Msg.alert('用户登陆', '登陆失败'+obj);
}else{
Ext.Msg.alert('用户登陆', '登陆失败');
}
}
});
}
}]
});
centerContainer.add(loginForm);
centerContainer.doLayout();
container.render(Ext.getBody());
}
};
这里面最主要的是:onSubmit : Ext.emptyFn 然后就是写submit 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2008-05-30
可你这样搞,就丢失了one page one application的特性了吧?
与其搞的这么复杂,还不如直接写一个html的form省事。html+js的代码都没有使用extjs的多。反正你也要提交的,页面也是要刷新的,所有东西也都要重加载的。 acegi默认实现用的redirect,要想和ajax结合,最简单的方法是在redirect的action里返回json。不会失去ajax的特性,也省的重写acegi内部实现。 |
|
| 返回顶楼 | |
|
时间:2008-05-30
以前实现是自己写了AuthenticationProcessingFilter,覆盖了sendRedirect方法。不做页面跳转。
|
|
| 返回顶楼 | |
|
时间:2008-06-24
目前正遇到此问题,谢谢楼主~~
|
|
| 返回顶楼 | |
|
时间:2008-06-24
xyz20003 写道 可你这样搞,就丢失了one page one application的特性了吧?
与其搞的这么复杂,还不如直接写一个html的form省事。html+js的代码都没有使用extjs的多。反正你也要提交的,页面也是要刷新的,所有东西也都要重加载的。 acegi默认实现用的redirect,要想和ajax结合,最简单的方法是在redirect的action里返回json。不会失去ajax的特性,也省的重写acegi内部实现。 我也是用这种方式,你不是说one page one application就是要将所有的应用写一个html里吧 |
|
| 返回顶楼 | |
|
时间:2008-06-25
one page one application是一个好的思想
但是实际情况总是不够完美 我们的用户需要快速的从我们的网站得所他所喜欢或是他所请求的服务,在这个时候,速度,至关重要,如果你提供了这样的服务,但速度让用户没办法接受,你无法征得用户。 加载一个相对较小的页面来提高下载速度,是有必要的。 这年头并不是谁离开了谁没办法活的年代了,相似的服务,有很多网站都提供,用户感受,至关重要,比如早些时候,javaeye访问速度明显下降,于是很多朋友就说,现在javaeye怎么访问速度慢慢了? 所以说,one page one application是一个好的思想,但我们没有必要拘拟于这个一个思想,只有最适合的,没有最完美的。 |
|
| 返回顶楼 | |
|
时间:2008-06-27
引用 这年头并不是谁离开了谁没办法活的年代了,相似的服务,有很多网站都提供,用户感受,至关重要,比如早些时候,javaeye访问速度明显下降,于是很多朋友就说,现在javaeye怎么访问速度慢慢了?
看了半天没看懂你想说啥? 是不是有几个字打错了。 |
|
| 返回顶楼 | |
|
时间:2008-07-14
我用在redirect的action里返回json,简单方便,
|
|
| 返回顶楼 | |
|
时间:2008-07-24
请问在Acegi后台返回authenticationFailureUrl时,会刷新,在下面这段的Ext.Msg.alert('')是怎么执行的
loginForm.form.submit({ url : '/jmc/j_acegi_security_check', method : 'POST', waitMsg : 'Processing the form now', waitTitle : 'Member Login', success : function(form, action) { Ext.Msg.alert('用户登陆', '登陆成功'); //location.href='/login.do?method=main'; }, failiure : function(form, action) { if (action.failureType == 'server') { var obj = Ext.util.JSON .decode(action.response.responseText); Ext.Msg.alert('用户登陆', '登陆失败'+obj); }else{ Ext.Msg.alert('用户登陆', '登陆失败'); } } }); |
|
| 返回顶楼 | |


![ecsun的博客: [海鹏Blog]--{FaceYe开源} 用户头像](http://www.javaeye.com/upload/logo/user/36668/bcfaff38-8200-4288-88e6-f588c3138e36.gif?1196653519)







