【zk demos】利用zk tree浏览目录

1,页面

 

<?xml version="1.0" encoding="utf-8"?>
<?page id="indexPage" title="" id="indexPage" cacheable="false" language="xul/html" zscriptLanguage="Java" contentType="text/html;charset=UTF-8"?>
<?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c" ?>
<?taglib uri="http://www.zkoss.org/zktools/zktools" prefix="z"?>
<?link rel="stylesheet" href="/css/global.css" type="text/css" media="screen" ?>
<window xmlns:w="client" xmlns:n="native" xmlns="http://www.zkoss.org/2005/zul"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.zkoss.org/2005/zul http://www.zkoss.org/2005/zul/zul.xsd"
	apply="${z:ctrl('indexController')}">
	浏览目录
	<textbox id="txtRoot"></textbox><button forward="onLoadFiles" label="Browse..."></button>
	<tree id="treeDir">
	</tree>
</window>

 

 

2,java代码,关于spring controller自动注册注解zk+hibernate+spring零配置

 

import java.io.File;

import org.apache.commons.lang.StringUtils;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zk.ui.util.GenericAutowireComposer;
import org.zkoss.zul.Treeitem;
import org.zkoss.zul.api.Textbox;
import org.zkoss.zul.api.Tree;
import org.zkoss.zul.api.Treechildren;

import com.sun4love.common.web.zk.ZkUtils;

@Controller
@Scope("prototype")
public class IndexController extends GenericAutowireComposer {
	private static final long serialVersionUID = 5909684044186358102L;
	private Textbox txtRoot;
	private Tree treeDir;

	public void onLoadFiles() {
		String root = txtRoot.getText();
		File file = new File(root);
		if (!file.exists() || file.isFile()) {
			ZkUtils.showExclamation(String.format("%s不存在或不是一个目录", root), "提示");
			return;
		}
		if (treeDir.getTreechildrenApi() == null) {
			new org.zkoss.zul.Treechildren().setParent(treeDir);
		}
		createTreeitem(file, treeDir.getTreechildrenApi());
	}

	private void createTreeitem(final File file, Treechildren tc) {
		String fileName = StringUtils.isBlank(file.getName()) ? file
				.getAbsolutePath() : file.getName();
		final Treeitem treeitem = new Treeitem(fileName, file);
		if (file.isDirectory()) {
			treeitem.setImage("/images/ClosedFolder.gif");
			treeitem.addEventListener(Events.ON_CLICK, new EventListener() {
				public void onEvent(Event evt) throws Exception {
					try {
						File[] fs = file.listFiles();
						if (fs == null) {
							return;
						}
						if (!createTreechildren(treeitem)) {
							return;
						}
						for (File f : fs) {
							createTreeitem(f, treeitem.getTreechildren());
						}
					} catch (Exception e) {
						ZkUtils.showExclamation("无访问目录权限", "提示");
					}
				}
			});
		} else {
			treeitem.setImage("/images/file_16x16.gif");
		}
		treeitem.setParent(tc);

	}
	private boolean createTreechildren(Treeitem item) {
		if (item.getTreechildrenApi() == null) {
			new org.zkoss.zul.Treechildren().setParent(item);
			return true;
		} else {
			return false;
		}
	}

}

 

 

 

 效果图

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值