vickzhu

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  151 随笔 :: 0 文章 :: 34 评论 :: 0 Trackbacks

#

用于指定服务器上可以使用该COOKIE的文件所在的路径,它只对该网址下的该路径下的应用起作用."/"表示服务器上所有目录都可以使用该COOKIE.
posted @ 2009-09-18 11:38 筱 筱 阅读(1164) | 评论 (0)编辑 收藏

页面如果用到Ext最好不要在body有任何文字输出,不然的话ext会报一个错误!

对象不支持此属性或方法
ext-all.js                                        行:9
posted @ 2009-07-31 23:26 筱 筱 阅读(149) | 评论 (0)编辑 收藏

郁闷了两天了,spring+hibernate查询数据,sql语句在数据库里试过了是正确的,数据库里有数据,但是就是查不出数据。后来仔细看日志文件,恍然大悟,原来是整形字段赋值为null,
Null value was assigned to a property of primitive type setter of com.*.*.*.age

posted @ 2009-07-31 11:40 筱 筱 阅读(1183) | 评论 (0)编辑 收藏

1、得到record中的某个字段:record.get("字段名称")
2、得到form中的某个字段值:this.form.findField("字段名称").getValue()
3、从reader中得到root指定的字段除外的字段:store.reader.jsonData.字段名称
4、关于combobx
    valueField  :  设置值
    displayField  :设置显示的值
    hiddenName :动态产生一个隐藏字段,以便表单提交的时候一起提交,事实上valueField和displayField在表单提交中没有启任何作用,往往指定hiddenName就行,如果在combobox中找到hiddenName匹配的值,则将匹配的值显示出来,因此,细心的朋友可以发现,在将选择的记录赋给combobox所在的form时(this.form.loadRecord(record)),在combobox里首先会显示出hiddenName指定的值(一般是id),在combobox的store加载完后,如果找到匹配的值则会显示匹配的值,中间有个值的变化过程!引申一下,如果我们combobox下拉框里用的是树,则hiddenName肯定是找不到匹配项的(Ext总是会在原始combobox下拉项中匹配,而现在下拉项换成了树),因此combobox会一直显示hiddenName的值(即一个id值)。在这种情况下我们就需要手动指定combobox的显示值,具体方法是在combobox的load事件中用setRawValue指定。注意这里不能用setValue指定,因为在使用hiddenName的情况下,setValue首先将值赋给隐藏字段,如果在combobox中找到匹配项则显示匹配项的值,如果没有匹配的值就显示setValue的值。

posted @ 2009-07-29 13:29 筱 筱 阅读(268) | 评论 (0)编辑 收藏

apache common Pool 对象池
apache common dbcp 数据库连接池
common dbcp依赖 common pool
posted @ 2009-07-09 09:53 筱 筱 阅读(171) | 评论 (0)编辑 收藏

一、Ignoring namespace handler [org.springframework.ejb.config.JeeNamespaceHandler]: handler class not found
        需要添加spring-remoting.jar包,具体路径为:MyEclipse 6.0\myeclipse\eclipse\plugins\com.genuitec.eclipse.springframework_6.0.1.zmyeclipse601200710\data\2.0\dist\modules
二、org.springframework.scripting.config.LangNamespaceHandler
        添加spring-support.jar包,具体路径为:MyEclipse 6.0\myeclipse\eclipse\plugins\com.genuitec.eclipse.springframework_6.0.1.zmyeclipse601200710\data\2.0\dist\modules

posted @ 2009-06-24 18:13 筱 筱 阅读(322) | 评论 (1)编辑 收藏

解决两种情况下的用户访问超时。
a)普通http请求的session超时。
b)异步http请求的session超时,使用ext后大部分的界面刷新都是异步的ajax请求。

不管是那种类型的http请求总是可以由一个过滤器来捕捉。
分类:普通http请求的header参数中没有x-requested-with:XMLHttpRequest头信息,而异步的有。
其实对于常见的ajax框架,header中还有标示自己身份的header信息。

对于普通的http请求,发现session超时后直接重定向到一个超时页面,显示访问超时。
对于异步http请求,发现session超时后则向请求的response中写入特定的超时头信息,客户端ajax对象检测
头信息,发现有超时状态标志后调用显示超时信息的javascript方法,提示用户访问超时。

服务器端session超时后在过滤器中为response添加新的头信息,标记该请求超时:

if(r.getHeader("x-requested-with")!=null
&& r.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){
response.setHeader("sessionstatus","timeout");
}
使用Ext.Ajaxt对象完成异步请求的交互,Ext.Ajax是单实例对象(非常重要,全局单一Ext.Ajax实例!)。
注册Ext.Ajax的requestcomplete事件,每个ajax请求成功后首先响应该事件。在该事件的回调函数里面判断
访问请求是否超时。使用Ext.Ajax对象的好处是,只需要引入一个包含了几行超时处理代码的js文件,就可以
为当前应用增加超时处理功能,原有代码不需要做任何修改。

使用Ext.Ajaxt对象完成异步请求交互,假如checkUserSessionStatus是你的回调方法,每个页面引用:

Ext.Ajax.on('requestcomplete',checkUserSessionStatus, this);
function checkUserSessionStatus(conn,response,options){
//Ext重新封装了response对象
if(typeof response.getResponseHeader.sessionstatus != 'undefined'){
//发现请求超时,退出处理代码...
}
}
可以利用的几个特性:
a)所有的ajax请求均带有x-requested-with:XMLHttpRequest头信息
b)Ext.Ajax是单实例对象(非常重要,全局单一Ext.Ajax实例!)
c)注册Ext.Ajax的requestcomplete事件,每个ajax请求成功后首先响应该事件(概念类似spring的aop拦截)。
jquery提供了几个全局事件可以用来处理session过期请求,如当ajax请求开始时会触发ajaxStart()方法的回调函数;
当ajax请求结束时,会触发ajaxStop()方法的回调函数。这些方法都是全局的方法,因此无论创建它们的代码位于何处,
只要有ajax请求发生时,都会触发它们。类似的事件还有:ajaxComplete(),ajaxError(),ajaxSend(),ajaxSuccess()等。
如果使某个ajax请求不受全局方法的影响,那么可以在使用$.ajax()方法时,将参数中的global设置为false,jquery代码如下:
$.ajax({
    url:"test.html",
    global:false//不触发全局ajax事件


})

 对于其他的ajax框架,解决用户访问请求超时这个问题的思路是类似的。

在这里推荐一个很实用的Js方法:

function getRootWin(){
var win = window;
while (win != win.parent){
win = win.parent;
}
return win;
}

 

通过该方法,可以在一个任意深度的iframe中调用父iframe中的方法。具体到这里就是无论哪一个iframe中的用户访

问请求超时,都可以通过该方法调用最外层iframe中的退出方法,这样便为用户提供了一个统一的访问超时退出的UI

呈现。

posted @ 2009-06-05 15:54 筱 筱 阅读(3475) | 评论 (0)编辑 收藏

failure:function(form, action){
    if(action.failureType == 'server'){
        //服务器端你自己返回success为false时
     Ext.MessageBox.alert('友情提示', action.result.info);
    }else if(action.failureType == 'connect'){
        //服务器指定的路径链接不上时
     Ext.Msg.alert('连接错误','指定路径连接错误!');
    }else if(action.failureType == 'client'){
        //客户端数据验证失败的情况下,例如客户端验证邮件格式不正确的情况下提交表单
     Ext.Msg.alert('提示','数据错误,非法提交');
    }else{
        //其它类型的错误
     Ext.MessageBox.alert('警告', '服务器数据传输失败:'+action.response.responseText);
    }
},
posted @ 2009-05-22 13:50 筱 筱 阅读(567) | 评论 (0)编辑 收藏

Ext的数据存储器为:Ext.data.Store
ExtJS中有一个名为Record的类,表格等控件中使用的数据是存放在Record对象中,一个Record可以理解为关系数据表中的一行,也可以称为记录。Record对象中即包含了记录(行中各列)的定义信息(也就是该记录包含哪些字段,每一个字段的数据类型等),同时又包含了记录具体的数据信息(也就是各个字段的值)。一个比较正规的创建store的代码如下:
var MyRecord = Ext.data.Record.create([
 {name: 'title'},
 {name: 'username', mapping: 'author'},
 {name: 'loginTimes', type: 'int'},
 {name: 'lastLoginTime', mapping: 'loginTime', type: 'date'}
]);
var dataProxy=new Ext.data.HttpProxy({url:"login.do"});
var theReader=new Ext.data.JsonReader({
 totalProperty: "results", 
 root: "rows",             
 id: "id"                  
 },MyRecord
);
var store=new Ext.data.Store({  
 proxy:dataProxy,
 reader:theReader
});
store.load();
store在创建的时候会自动使用HttpProxy来加载参数,并且使用post方式来提交请求,因此上面的代码可简化为:
var MyRecord = Ext.data.Record.create([
 {name: 'title'},
 {name: 'username', mapping: 'author'},
 {name: 'loginTimes', type: 'int'},
 {name: 'lastLoginTime', mapping: 'loginTime', type: 'date'}
]);
var theReader=new Ext.data.JsonReader({
 totalProperty: "results", 
 root: "rows",             
 id: "id"                  
 },MyRecord
);
var store=new Ext.data.Store({  
url:'login.do',
 reader:theReader
});
store.load();
在Store类的基础上提供了SimpleStore、JSonStore、GroupingStore等,因此上面的JsonReader可以省略:
var store = new Ext.data.JsonStore({
            url:'contact.do',
            root:'data',
            totalProperty:'totalCount',
            fields:[{name: 'vid', mapping: 'id'},
                {name: 'name', mapping: 'name'},
                {name: 'vmethod', mapping: 'vmethod'}]
        });
posted @ 2009-05-22 11:15 筱 筱 阅读(749) | 评论 (0)编辑 收藏

       success:function(form,action){
              window.location.href = 'index.jsp'; 
        },
        failure : function(form, action) {
         if(action.failureType == 'server'){
          Ext.Msg.alert('登录错误',action.result.errors);
            }else if(action.failureType == 'connect'){
             Ext.Msg.alert('连接错误','指定路径连接错误!');
            }else{
             Ext.MessageBox.alert('警告', '服务器数据传输失败:'+action.response.responseText);
            }
        }

        
        java返回的数据,成功为:String json="{success:true}",失败为: String json="{success:false,errors:'用户名或者密码错误!!!'}";
posted @ 2009-05-08 11:11 筱 筱 阅读(1385) | 评论 (0)编辑 收藏

仅列出标题
共9页: 上一页 1 2 3 4 5 6 7 8 9 下一页