1. 程式人生 > >Easyui例項--tree元件的使用1

Easyui例項--tree元件的使用1

package com.chenqk.springmvc.controller;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import com.chenqk.springmvc.entity.Tree;
import com.chenqk.springmvc.service.TreeService;
import com.chenqk.springmvc.util.CommonUtil;

/**
 * 控制層
 * @author chenqk
 * 
 * @RequestMapping 是一個用來處理請求地址對映的註解,可用於類或方法上。用於類上,
 * 表示類中的所有響應請求的方法都是以該地址作為父路徑。
 * 該註解分為6個屬性
 * value:     指定請求的實際地址,指定的地址可以是URI Template 模式,其中可以為普通的具體值,
 * 含有某變數的一類值,包含正則表示式的一類值;
 * method:  指定請求的method型別, GET、POST、PUT、DELETE等;
 * consumes: 指定處理請求的提交內容型別(Content-Type),例如application/json, text/html;
 * produces:    指定返回的內容型別,僅當request請求頭中的(Accept)型別中包含該指定型別才返回;
 * params: 指定request中必須包含某些引數值是,才讓該方法處理。
 * headers: 指定request中必須包含某些指定的header值,才能讓該方法處理請求。
 */
@Controller
@RequestMapping("/")
public class TreeController {
	@Autowired
	@Qualifier("TreeService")
	private TreeService treeService;
	
	
	public TreeService getTreeService() {
		return treeService;
	}



	public void setTreeService(TreeService treeService) {
		this.treeService = treeService;
	}



	/**
	 * 初始化tree資料
	 * @param pid
	 */
	@RequestMapping(value="/getNodesByParentId",method=RequestMethod.POST)
	public void getNodesByParentId(@RequestParam("id") int id,HttpServletResponse response){
		String node_str = "";
		StringBuffer json = new StringBuffer();
		//獲得根節點資訊,以便組裝到json中
		Tree treeRoot = treeService.getNodeById(id);
		json.append("[");
		json.append("{\"id\":" +String.valueOf(treeRoot.getId())); 
		json.append(",\"text\":\"" +treeRoot.getText() + "\"");
		json.append(",\"state\":\"open\"");  
		json.append(",\"attributes\":\""+treeRoot.getAttributes() + "\"");  
		json.append(",\"children\":["); 
		//獲取根節點下的所有子節點
		List<Tree> treeList = new ArrayList<Tree>();
		treeList = treeService.getNodesByParentId(id);		
		if(treeList != null && treeList.size() != 0){			
			for (Tree t : treeList) {
				json.append("{\"id\":" +String.valueOf(t.getId()));   
                json.append(",\"text\":\"" +t.getText() + "\"");   
                json.append(",\"state\":\"open\"");
                json.append(",\"attributes\":\""+t.getAttributes() + "\"");
                json.append(",\"children\":[");
                List<Tree> tList = treeService.getNodesByParentId(t.getId());
                if(tList != null && tList.size() != 0){                	  
                    json.append(CommonUtil.dealJsonFormat(tList));// 存在子節點的都放在一個工具類裡面處理了  
                    json.append("]},");  
                }else{
                	json.append("]},");
                }
			}
		}else{
			json.append("]");
		}
		node_str = json.toString();  
		node_str = node_str.substring(0, node_str.length()-1);  
		node_str+="]}]";  
		try {
			response.getWriter().print(node_str);
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
}