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;
}
}
}
效果图