ssh2 action中的list如何转换成json然后传递给extjs tree 请高手帮忙 如何写action和extjs呀
本帖最后由 logive 于 2010-09-26 21:38:06 编辑 action:源代码
package com.log.action.tree;
import java.util.List;
import com.log.manager.tree_Manager;
import com.log.model.treemodel;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class Tree_Action extends ActionSupport {
private tree_Manager tree_manager;
private List<treemodel> tree_model;
private int id;
private int pid;
private String name;
private String url;
private String target;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getTarget() {
return target;
}
public void setTarget(String target) {
this.target = target;
}
public void setTree_manager(tree_Manager tree_manager) {
this.tree_manager = tree_manager;
}
@Override
public String execute() throws Exception {
tree_model=tree_manager.listTree();
//这里如何转换成jeson,以及如何发送给客户端页面
return SUCCESS;
}
}
package com.log.model;
/**
*
* @author kingbug.zhang
* @hibernate.class table="tb_tree_Model"
*/
public class treemodel {
/**
* @hibernate.id
* generator-class="native"
*/
private int id;
/**
* 父ID
* @hibernate.property
*/
private int pid;
/**
* 名称
* @hibernate.property
*/
private String name;
/**
* 跳转地址
* @hibernate.property
*/
private String url;
/**
* 跳转窗口
* @hibernate.property
*/
private String target;
}
get set 方法省略。。。。。。
public class tree_Manager_Impl extends HibernateDaoSupport implements tree_Manager {
@SuppressWarnings("unchecked")
public List<treemodel> listTree() {
String hql="from treemodel user order by user.id";
return getHibernateTemplate().find(hql);
}
}
Ext.onReady(function(){
//Ext.util.CSS.swapStyleSheet("theme", "extjs/resources/css/xtheme-purple.css")
Ext.BLANK_IMAGE_URL = "extjs/resources/images/default/s.gif";
Ext.QuickTips.init();
//////////
var tree = new Ext.tree.TreePanel({
el: "west_div",
autoScroll: true,
border: false,
loader: new Ext.tree.TreeLoader({dataUrl: "tree_Action.action"})
//这里这样写有没有问题,如果不行请问怎么写});
var root = new Ext.tree.AsyncTreeNode({id: "0", text: "root节点"});
tree.setRootNode(root);
tree.render();
tree.expandAll();
//事件
tree.on("expandnode", function(node){
//Ext.log(node + "节点被展开");
});
tree.on("collapsenode", function(node){
//Ext.log(node + "节点被收缩");
});
tree.on("click", function(node){
//Ext.log(node + "节点被单击" + node);
//alert(node.attributes.tourl);
});
tree.on("dblclick", function(node){
//Ext.log(node + "节点被双击");
//存在路径才打开
if(node.attributes.tourl){
openNewTab(node.id, node.attributes.tourl, node.attributes.text);
}
});
//右键菜单
var lmenu = new Ext.menu.Menu({
id: "lmemu",
items:[{
text: "菜单一",
handler: function(){
viewport.items.each(function(item){
alert(item.region);
});
Ext.Msg.alert("菜单事件", "我是菜单一,欢迎光临");
}
},{
text: "菜单二",
handler: function(){
Ext.Msg.alert("菜单事件", "我是菜单二,欢迎光临");
}
},{
text: "菜单三",
handler: function(){
Ext.Msg.alert("菜单事件", "我是菜单三,欢迎光临" + Ext.get("west_div").getHeight());
}
}]
});
tree.on("contextmenu", function(node, e){
e.preventDefault();//禁止浏览器右键菜单
node.select();//选中节点
lmenu.showAt(e.getXY());
});
//修改节点标题
//var treeEditor = new Ext.tree.TreeEditor(tree, {allowBlank: false});
//TabPanel
var tabPanel = new Ext.TabPanel({
renderTo: "center_div",
enableTabScroll: true,
border:false,
frame: true,
autoWidth: true,
layoutOnTabChange:true,
plugins: [new Ext.ux.TabCloseMenu()],
defaults: {autoScroll:true} //如果内容超出范围,则自动出现滚动条
//deferredRender:false //一次性将选项卡内容全部加载,不推荐
});
tabPanel.add({
id: "tab1",
title: "主页",
//closable: true, //关闭按钮
layout: "fit",
autoLoad: {url: "main_middle.jsp", scripts: true}
});
tabPanel.activate(0);
//定义打开选项的方法
var openNewTab = function(id/*树节点ID,唯一标识选项卡*/, url/*点击节点后打开的页面地址*/, title/*标题*/){
//根据ID获取tab对象
var tab = tabPanel.getItem(id);
//判断tab是否已打开,如果已经打开,则不创建直接显示,否则显示
if(tab){
//已经打开,更新
//获取更新器,并更新
//tabPanel.getUpdater().update(url);
}else{
//没打开,则创建
tab = tabPanel.add({
title: title,
layout: "fit",
autoLoad: {url: url, scripts: true},
closable: true, //关闭按钮
iconCls: "icon", //x-tree-node-icon
id: id
});
}
//将最新选项卡设置激活
tabPanel.setActiveTab(tab);
}
var viewport = new Ext.Viewport({
layout: "border",
items:[
{
title: "树测试系统",
region: "north",
contentEl: "north_div",
split: true,
border: true,
collapsible: true,
height: 0,
minSize: 0,
maxSize: 0
},{
//title: "状态栏",
region: "south",
contentEl: "south_div",
split: true,
border: true,
collapsible: true,
height: 0,
minSize: 0,
maxSize: 0
},{
//title: "用户列表",
layout: "accordion",
region: "east",
contentEl: "east_div",
split: true,
border: true,
collapsible: true,
width: 100,
minSize: 50,
maxSize: 120,
layoutConfig:{
animate: true
},
items: [{
title: "在线用户",
autoLoad: {url: "sysAdmin/companyInfor.jsp", scripts: true}
},{
title: "其它1"
},{
title: "其它2"
}]
},{
title: "功能菜单",
region: "west",
contentEl: "west_div",
split: true,
border: true,
collapsible: true,
width: 200,
minSize: 120,
maxSize: 120,
//tools:[{id: "close"},{id: "up"}, {id: "down"}],
listeners: {
resize: function(component, width, height){
if(tree){
tree.setHeight(component.getInnerHeight());
}
}
}
},{
id: "c",
//title: "中央",
region: "center",
contentEl: "center_div",
split: true,
border: true,
collapsible: true,
listeners: {
resize: function(component, width, height){
if(tabPanel){
tabPanel.setHeight(component.getInnerHeight());
}
}
}
}
]
});
})