EXTJS4.0.7开发积累
有从网络上搜索到的资源,也有自己开发中的总结,侵权告知删除!
注意 var ta="'"+4+"'"; 如上的表达式,在Ext.Array.remove中没用 | var str='-1,2,3,4'; var arr=str.split(','); console.info('arr:'+arr.toString()); varta=eval("'"+4+"'"); vararr1=Ext.Array.remove(arr,ta).toString(); console.info('arr new:'+arr1); | |
xtype:'hidden' hidden:true 两中类型的区别 hidden类型取值要注意 | if(form.down('#action_type').getValue()=='popuppage'){ win.parentwindow.down('#popup_page_id').setValue(form.down('#popup_page_id').getValue()); } 如上代码,如果[#popup_page_id]代表的控件不是hidden类型,而是hidden:true,那么尽管有value:-1的设置,getValue()后只能获得null值,不能获得-1 | |
java的eval | JDK自带的类可以实现调用JS的功能,可以实现执行字符串中的运算公式的功能。
public classrunString { static ScriptEngine jse = newScriptEngineManager().getEngineByName("JavaScript");
/** * @param args */ public static void main(String[] args){
} } 注意:如果公式中存在变量作为运算的元素的话,可以借鉴使用replaceAll()方法将相应的变量替换成实际的数值。如果是多个变量可以利用循环遍历的方式来解决。 例子:jse.eval("1+b".replaceAll("b",b.toString())); | |
(a >= 0 && a <= 5) a是变量 jdk1.6中可以直接这样用 | import javax.script.*; public class TestScript {
} | |
取消column定义设置的unique属性 | 字段定义:treeId varchar(256) unique not null 取消方法:alter table menutree drop indextreeId;
UNIQUE 约束唯一标识数据库表中的每条记录。 UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。 PRIMARY KEY 拥有自动定义的 UNIQUE 约束。 | |
mysql 767 Bytes | [ERROR 1071 (42000): SpecifiedKey was too Long; Max Key Length is 767 Bytes] example CREATE TABLE department (
); ALTER TABLE department ADD PRIMARY KEY (id, name);
ERROR 1071 (42000) at line 8: Specifiedkey was too long; max key length is 767 bytes[alter table department engine=innodb;也会报相同的错误]
Cause The maximum key length for theMySQL database for InnoDB Engine is 767 bytes. The key length includes the sumlengths of all the columns included in the key. Solutions There are several solutions forthis issue: Changing the size of somecolumns. For example, if VARCHAR(300) is used tostore last names, you can reduce its size to 100 with minimal risk of dataloss. Specifying the partial column length for the charactercolumns in the key. For example, for VARCHAR(1000) column, you canspecify only 100 characters to be used in the key. | |
避免用户重复提交的实现方法 |
| |
退出时 在Ext.Ajax.request直接跳转到登录页面 | Ext.Ajax.request({ url:'logout.action', callback:function(options,success,response) { // var respText =Ext.JSON.decode(response.responseText); // Ext.Msg.alert('提示',respText.message,function(){ // location.href='/beimi/index.html'; // }); window.location.href='/beimi/index.html'; // Ext.Msg.show({ // title:'退出成功', // msg: respText.message, // buttons: Ext.Msg.OK, // icon: Ext.Msg.INFO fn:function(){ location.href='/beimi/index.html'; } // }); } });
1:不用alter,样子太难看 2:不显示退出成功提示,基本看不到,没有必要保留这段代码了 3:show点击后也可以跳转到登录页面,但点击前页面上的信息还再,不安全 4:request返回后就直接重定位到登录界面,安全高效 | |
Ext.Array.merge Ext.Array.union merge&union相同功能 | var x_array=[ {'action_type':1}, {'action_type':2}, {'action_type':3} ]; var y_array=[ {'action_type':1}, {'action_type':2}, {'action_type':3} ];
var arr= Ext.Array.merge(x_array,y_array); for(var key=0 in arr){
} 输出123123
var x_array=[ 1,2,3 ]; var y_array=[ 1,2,3 ];
var arr= Ext.Array.merge(x_array,y_array); for(var key=0 in arr){
} 输出123 比较上面两段代码,{'action_type':1}以对象方式处理,所以尽管有两个{'action_type':1}也不可能相同,纯数字就不同了。 | |
前台中文查询条件处理 1、需要到db层的查询 2、不需要的db层的查询 | 1、condition=CommUtils.getUTF8str(getRequest().getParameter("condition")); 2、condition=getRequest().getParameter("condition"); 注:getUTF8str转换new String(str.getBytes("ISO-8859-1"),"UTF-8"); 1用于前台获取的中文字符要到数据库查询 2是前台获取的中文字符不需要到数据库查询,在数据库外的list对象中使用contains查询 | |
mysql事务 service同层之间不要调用 DAO可以和SQL合并为一个Service,事务共享 | 默认情况下,mysql使用innodb引擎,但是建表默认情况下是使用不支持事务的MyISAM。如果需要对表的操作支持事务,比如通过jdbc。那需要建表中指定innodb引擎,比如: create table USERS ( ID int not null auto_increment, NAME varchar(100) not null, BIRTHDAY date, PHOTO longblob,primary key(ID) )engine=innodb; 针对已经创建的表,可以: ALTER TABLE USERS TYPE=INNODB; 另外,可以通过以下命令查看全局事务隔离级别: SELECT@@global.tx_isolation; 或者,查看会话事务隔离级别: SELECT@@tx_isolation; 在使用事务的时候,如果是通过命令行工具,需要先关闭自动提交: setautocommit=off; 1 查看系统支持的存储引擎 show engines; 2 查看表使用的存储引擎 两种方法: a、show table status from db_name where name='table_name'; b、show create table table_name; 如果显示的格式不好看,可以用\g代替行尾分号 有人说用第二种方法不准确,我试了下,关闭掉原先默认的Innodb引擎后根本无法执行show create table table_name指令,因为之前建的是Innodb表,关掉后默认用MyISAM引擎,导致Innodb表数据无法被正确读取。 3 修改表引擎方法 alter table table_name engine=innodb; 4 关闭Innodb引擎方法 关闭mysql服务: net stop mysql 找到mysql安装目录下的my.ini文件: 找到default-storage-engine=INNODB 改为default-storage-engine=MYISAM 找到#skip-innodb 改为skip-innodb 启动mysql服务:net start mysql 通过实验,可以有如下: 把每个表的engine由MyISAM修改iinodb后就可以支持事务。 事务配置在service方法上时,不要调用同层的service非法。尽管事务嵌套事务,最里面的事务依然是单独提交,和外面的事务没有关系。 jdbcDAO执行的sql语句可以和DAO的合并在一个service方法里面执行,配置在service方法上的事务控制可以统管sql语句事务。 |