> 웹 프론트엔드 > JS 튜토리얼 > Dojo와 JSON을 사용하여 동적으로 로드되는 무한 수준의 AJAX 함수 모듈 tree_dojo 구축

Dojo와 JSON을 사용하여 동적으로 로드되는 무한 수준의 AJAX 함수 모듈 tree_dojo 구축

WBOY
풀어 주다: 2016-05-16 19:16:06
원래의
951명이 탐색했습니다.

"최대 절전 모드를 사용하여 트리 구조의 무제한 분류 구현"이라는 기사를 읽은 후, 제가 개발하는 모든 프로젝트에 사용되는 기능 모듈 트리의 구현 방법과 모든 사람과 공유할 전체 DEMO(소스 코드 포함)도 게시하고 싶습니다. 사실 오래전에 블로그에 올렸었는데, 시간관계상 제대로 정리를 못했어요.
함수 모듈 트리는 거의 모든 프로젝트에서 사용되는 것입니다. Dojo를 사용하면 트리의 하위 노드를 동적으로 로드할 수 있다는 장점이 있는데, 이는 트리 노드가 많을 때 매우 유용합니다.
첨부 파일 2 dojotree.rar를 다운로드하고 압축을 푼 후 distdojotree.war를 애플리케이션 서버에 배포하여 DEMO를 찾아보세요. HSQLDB 데이터베이스는 DEMO에 내장되어 있으며 시작 시 자동으로 로드됩니다. DEMO 실행 스크린샷은 첨부 1을 참조하세요.
1. tree.jsp의 메인코드
1. 먼저 헤드에 Dojo 라이브러리(dojo.js)와 TreeWidget을 임포트합니다


2. , TreeLoadingController ="treeServlet"의 RPCUrl은 백그라운드에서 데이터를 얻는 서블릿의 이름입니다. TreeNode의 ExpandLevel은 트리


div>
의 초기 확장 수준을 나타냅니다.
div>



3. TreeSelector 이벤트 핸들러 함수 생성
function treeSelectFired() {
// treeSelector에 대한 참조 가져오기 선택한 노드를 가져옵니다.
var treeSelector = dojo.widget .manager.getWidgetById('treeSelector')
var treeNode = treeSelector.selectedNode
// songDisplay div에 대한 참조 가져오기
var hostDiv = document.getElementById("songDisplay");
var isFolder = treeNode['isFolder'];
//alert(isFolder)
if (!isFolder) {
var song = treeNode ['title'];
var url = treeNode[ 'url'];
link(url);
} else {
} }
4. treeSelector에 대한 이벤트 핸들러 함수
function init() { > //treeSelector에 대한 참조 가져오기
var treeSelector = dojo.widget.manager.getWidgetById('treeSelector')
//선택 이벤트 연결 treeSelectFired()
dojo .event.connect(treeSelector,'select','treeSelectFired')
}   
dojo.addOnLoad(init);   
二、主要java代码及数据结构
1、Gnmk.java中tree的属性
 private String id;     
 private String gnmkdm;  //功能模块代码   
private String gnmksm;  //功能模块说明   
private String gnmktb;  //功能模块图标   
 private String gnmklj;  //功能模块路径   
 private String gnmkmc;  //功能模块名称   
private String gnmksj;  //功能模块上级代码   
private String gnmkbz;  //功能模块标志(‘N'为叶节点)   
2、HSQLDB内存数据库加载SQL(db.sql)
CREATE TABLE GNMK (ID VARCHAR, GNMKDM VARCHAR, GNMKMC VARCHAR, GNMKLJ VARCHAR, GNMKTB VARCHAR, GNMKBZ VARCHAR, GNMKSJ VARCHAR);     
INSERT INTO GNMK VALUES ('d098a59f0b765c30010b765d6b780001', '01', '一级目录1', null, 'system.gif', 'Y', '');     
INSERT INTO GNMK VALUES ('d098a59f0b765e68010b765fda830001', '0101', '二级目录1', 'cxtjAction.do', 'system.gif', 'N', '01');     
INSERT INTO GNMK VALUES ('d098a59f0b765e68010b765fda830001', '0102', '二级目录2', 'cxtjAction.do', 'system.gif', 'N', '01');     
INSERT INTO GNMK VALUES ('d098a59f0b765c30010b765d6b780002', '02', '一级目录2', null, 'system.gif', 'Y', '');     
INSERT INTO GNMK VALUES ('d098a59f0b765e68010b765fda830002', '0201', '二级目录1', 'cxtjAction.do', 'system.gif', 'N', '02');     
INSERT INTO GNMK VALUES ('d098a59f0b765e68010b765fda830002', '0202', '二级目录2', 'cxtjAction.do', 'system.gif', 'Y', '02');     
INSERT INTO GNMK VALUES ('d098a59f0b765e68010b765fda830002', '020201', '三级目录1', 'cxtjAction.do', 'system.gif', 'N', '0202');     
INSERT INTO GNMK VALUES ('d098a59f0b765e68010b765fda830002', '020202', '三级目录2', 'cxtjAction.do', 'system.gif', 'N', '0202');    
3、TreeServlet .java主要代码,在getGnmkByParent(String gnmksj)方法中可以实现自己的业务,DEMO中使用GnmkDAO
public class TreeServlet extends HttpServlet {   
    private static final long serialVersionUID = 1L;   
    protected void doGet(HttpServletRequest request,   
            HttpServletResponse response) throws ServletException, IOException {   
        String action = request.getParameter("action");   
        System.out.println("action b=>" + action);   
        System.out.println("action b=>" + action);   
        String data = request.getParameter("data");   
        if (action.equalsIgnoreCase("getChildren")) {   
            JSONTokener jsonTokener = new JSONTokener(data);   
            JSONObject jsonObject = (JSONObject) jsonTokener.nextValue();   
            JSONObject parentNodeObject = (JSONObject) jsonObject.get("node");   
            response.setContentType("text/json; charset=gb2312");   
            PrintWriter out = response.getWriter();   
            out.write(getChildren(parentNodeObject));    } else {}
private String getchildren (jsonObject parentnodeobject) {        String parentObjectId = parentNodeObject.getString("objectId");// id 唯一   
        // String parentWidgetId = parentNodeObject.getString("widgetId");//
        parentObjectId = parentObjectId.equalsIgnoreCase("루트 ") ? ""   
                : parentObjectId;   
        System.out.println("parentObjectId=>"   parentObjectId);   
        // 获取子功能模块   
        목록 listGnmk = this.getGnmkByParent(parentObjectId);   
        System.out.println("listGnmk=>"   listGnmk.size());   
        if (listGnmk != null) {   
            Iterator itGnmk = listGnmk.iterator();   
            동안 (itGnmk.hasNext()) {   
               Gnmk qxgnmk = (Gnmk) itGnmk.next();   
               시도해 보세요 {   
                  JSONObject jsonGnmkObject = new JSONObject();   
                   문자열 gnmkbz = qxgnmk.getGnmkbz();   
                   부울 isFolder = gnmkbz.equalsIgnoreCase("Y") ? 참   
                           : false;   
                   jsonGnmkObject.put("title", qxgnmk.getGnmkmc());   
                   jsonGnmkObject.put("isFolder", isFolder);   
                   jsonGnmkObject.put("widgetId", qxgnmk.getGnmkdm());   
                   jsonGnmkObject.put("objectId", qxgnmk.getGnmkdm());   
                   jsonGnmkObject.put("childIconSrc", "images/"   
                          qxgnmk.getGnmktb());   
                   jsonGnmkObject.put("url", qxgnmk.getGnmklj());   
                   result.put(jsonGnmkObject);   
                }catch (JSONException e) {                                                       🎜> return result.toString();
}
private List getGnmkByParent(String gnmksj ) {
GnmkDAO gnmkDao = new GnmkDAO()
return gnmkDao.getGnmkByParent(gnmksj );
}
} 3. DEMO에 대한 기타 구성 지침
1. javax 구현 .servlet.ServletContextListener 인터페이스의 contextInitialized 메소드는 HSQLDB 및 해당 데이터를 로드하는 데 사용됩니다. java is
public void contextInitialized(ServletContextEvent event) {
try { // 드라이버 로드
Class .forName ("org.hsqldb.jdbcDriver")
// 테이블 생성 및 샘플 추가 data
InputStreamReader in = new InputStreamReader(getClass().getClassLoader().getResourceAsStream("db.sql"))); BufferedReader reader = new BufferedReader(in)
DBUtils.setupDatabase(reader);
} catch(ClassNotFoundException e) {
e.printStackTrace();                               2. Web.xml 관련 구성



dojo.sample.ContextListener


청취자급>

>




다운로드
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿