日期:2014-05-16 浏览次数:20902 次
不多说,直接给代码:
1、java代码:
@ParentPackage("json-default")
public class AjaxRuleConfigAction extends ActionSupport implements SessionAware {
/**
*
*/
private static final long serialVersionUID = 10255L;
// private List<String> operatorList = new ArrayList<String>();
// private String columnName;
private Map<String, Object> session;
private String property;
private String propertyType;
private String tableName;
// 存放节点信息
private List<Map<String, Object>> nodes = new ArrayList<Map<String, Object>>();
/**
* 加载树形菜单
*
* @return
* @throws Exception
*/
@Action(value = "/loadNode", results = { @Result(type = "json", name = SUCCESS) })
public String doLoadNode() throws Exception {
Object obj = session.get("database");
if (obj == null) {
return ERROR;
}
Database database = (Database) obj;
/*** 根节点 ***/
Map<String, Object> rootMap = new HashMap<String, Object>();
rootMap.put("id", database.getDatabaseName());
rootMap.put("name", database.getDatabaseName());
rootMap.put("isParent", true);// 设置是否为根节点
List<Map<String, Object>> tableNode = new ArrayList<Map<String, Object>>();
/*** 将数据库中的表作为第二级菜单 ***/
Set<Table> tables = database.getTables();
for (Table table : tables) {
Map<String, Object> subNode = new HashMap<String, Object>();
subNode.put("id", table.getTableName());
subNode.put(
"name",
table.getFullName() == null ? table.getTableName() : table
.getFullName());
Set<Column> columns = table.getColumnSet();
List<Map<String, Object>> columnNode = new ArrayList<Map<String, Object>>();
/*** 将表中的列作为第三级菜单 ***/
for (Column column : columns) {
System.out.println(column.getFullName());
Map<String, Object> thirdNode = new HashMap<String, Object>();
thirdNode.put("id", column.getColumnName());
thirdNode.put(
"name",
StringUtils.isEmpty(column.getFullName()) ? column
.getColumnName() : column.getFullName());
columnNode.add(thirdNode);
}
if (columnNode.size() != 0) {
subNode.put("children", columnNode);
}
tableNode.add(subNode);
}
rootMap.put("children", tableNode);
nodes.add(rootMap);
return SUCCESS;
}
.............
}
?2、页面的js代码:
var setting = {
data : {
simpleData : {
enable : true,
idKey : "id"
}
},
callback : {
//绑定树形菜单点击事件
onDblClick : treeClick
}
};
var zNodes;// 树节点,
var zTreeObj;// 树对象
$(function() {
//页面加载时候发起ajax请求,获取树形菜单的数据
$.ajax({
url : "loadNode.action",
type : "get",
dataType : "json",
global : false,
async : false,
success : function(data) {
zNodes = eval(data.nodes);
}
});
zTreeObj = $.fn.zTree.init($("#permission_tree"), setting, zNodes);
?