我也来实现ztree模糊搜索功能

之前看了一篇oschina上的关于ztree模糊搜索的文章,我很负责任的说,作者很不负责任,代码不COPY完就贴出来,反正看完似懂非懂,想了想,还是自己实现来得快,于是就自己实现咯…

先看demo,如果感觉效果还不错就继续看下面代码:

主要代码就3块:

1,搜索:

// 模糊搜索name满足条件的节点
function searchNode(value) {
	if (value == "") return;
	
	// 获取与value匹配的节点,使用的ztreeAPI getNodesByParamFuzzy
	var nodes = treeObj.getNodesByParamFuzzy("name", value);

	// 关闭所有节点的高亮
	// 使用API transformToArray获取所有的节点,getNodes()只能获得根节点,属性children也只能获取下一级节点
	var allNodes = treeObj.transformToArray(treeObj.getNodes());

	for (var i = 0; i < allNodes.length; i ++) {

		// 关闭高亮是利用节点属性highlight来控制fontCss实现的
		// 需要配合setting.view中设置的fontCss使用,后面代码会说
		allNodes[i].highlight = false;

		// 更新节点,因为hightlight改变了,使用updateNode可以更新节点
		treeObj.updateNode(allNodes[i]);
	}
	// 先关闭所有节点
	treeObj.expandAll(false);

	// 展开根节点(如果不展开根节点,下面的节点无法展开,不知道是不是bug)
	treeObj.expandNode(treeObj.getNodes()[0],true);

	// 高亮并展开搜索到的节点
	for (var i = 0; i < nodes.length; i ++) {

		nodes[i].highlight = true;
		treeObj.updateNode(nodes[i]); // 更新节点,让高亮生效

		// 展开搜索到的节点的父节点
		treeObj.expandNode(nodes[i].getParentNode(),true);
	}
}

继续阅读

记一场与java.lang.illegalstateexception: stream的遭遇战

我就像只辛勤的小蜜蜂,每天任劳任怨的撸着码…

今天写服务端向浏览器发送文件的代码,运行后,后台报错java.lang.illegalstateexception: stream,查了资料,找了很久,都没能解决问题…

最后突然发现,这个报错信息上面还有一段…(这什么眼神儿啊,居然没看到上面的报错信息),结果错误不是出在流上面,而是传送数据下面的一句代码,就这句代码造成了illegalstatexception的问题… 我也是醉了。

另外,Jfianl传送完流之后,要使用renderNull(),否则,会报java.lang.illegalstateexception: commited的错误。

来说说那句错误的代码,java中字符串是用双引号,而Oracle中字符串是用单引号,正好单引号又是java中的char字符的表示方式。而我在写在写java时写成了:

Record r = new Record();
r.set("status",'0');

而要设置的这个status字段是CHAR(1 BYTE)类型的,就这样,报错为“不是有效的列类型”… 这就是个坑啊!

ztree实现叶子节点半勾选状态

ztree叶子节点半勾选

这只是效果图,demo点击链接查看

ztree是一个前端的基于jQuery的树形结构插件,最近项目要用到,所以就学习了下,功能还是很强大的,但是一些小细节还是无法满足的,于是研究了一天,自己写了几个方法把小细节实现了。

具体业务是这样的:
1,节点可以勾选
2,叶子节点可以半勾选/取消,
3,勾选状态和父节点关联
4,点击叶子节点可以执行方法
5,点击父节点只能展开或收缩

但是研究后发现,ztree不能提供叶子节点自动半勾选和半勾选的自动计算(即自动取消,比如取消父节点,所有叶子节点的半勾选都要取消),也就是说只能手动设置,而后面发现这个还是比较坑:
1,手动设置的半勾选状态必须手动去清除
2,父节点自动计算的半勾选的halfCheck居然是false…

所以需要注意这点,先看看改造后的实例
继续阅读

Oracle创建用户和设置表空间

最近又在捣鼓Oracle了,用久了MySQL,Oracle好多东西都给忘了… 又开始慢慢的补,下面是创建用户的命令,为了方便查找,贴到这里来了:

1,创建用户,使用默认的表空间,即SYSTEM.DBF

create user admin identified by root;

2,修改用户的表空间

alter user admin default tablespace oracle_study;

3,查看用户的表空间(当前用户只能查看当前用户的表空间)

select username,default_tablespace from user_users;

4,更改表空间大小

alter database datafile 'C:\PROGRAMS\ORACLEXE\APP\ORACLE\ORADATA\XE\oracle_study.dbf' resize 1024m;

(设置表空间查看Oracle数据库11g快捷版使用教程

5,查看表空间名称和大小

select tablespace_name, round(bytes / 1024 / 1024, 0) tsize from dba_data_files;

同一个表空间里,用户不同,看到的表也不同,貌似相当于MYSQL的两个数据库…不知道理解的对不对,还须研究…