7鏈?1鏃?/STRONG> |
涓嶇敤榪唬綆楁硶鑰屽揩閫熷疄鐜扮殑jsp鏍戠粨鏋?/STRONG> |
涓:闇姹傜殑鎻愬嚭 娉ㄦ剰: 鍏跺疄XT_DW琛ㄤ腑鐨勭埗搴忓彿鏄浣欑殑.涓嶈繃濡傛灉浣犺鐢ㄨ凱浠g畻娉曟潵瀹炵幇,灝辨槸蹇呴』鐨?BR>鎵嶆湁10浣嶇紪鐮?鎴戝彧闇瑕佷竴鍙ョ畝鍗曞揩閫熺殑sql璇彞灝卞彲浠ュ疄鐜版爲緇撴瀯: /*******Constants.java**********/ package com.lcl.common; public class Constants {
package com.lcl.common; import java.sql.*; /** /*********DepEmplConfig.jsp************/ <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,com.lcl.common.*" errorPage="" %> body { var tree = new WebFXTree("鍗曚綅浜哄憳鍩烘湰鎯呭喌","R0"); function addDeptTreeNode(preNodeLevel,curNodeLevel,dispLabel,sKey,sTag) { function treeClick() { function addPeople() { function addDept() { function deleSelected() { function removeNode() { function addPeopleNode(strParentKey,strKey,strText,strTag) { function addDeptNode(strParentKey,strKey,strText,strTag) { function updateDeptNode(strTag,strText) { function updatePeopleNode(strTag,strText) { }
|
鏍戝艦緇撴瀯鍦ㄥ疄闄呭紑鍙戜腑寰堝父鐢紝浣嗘槸鏍戝艦緇撴瀯鐨勫紑鍙戝線寰涔熸槸闅鵑錛屽挨鍏舵槸鍦ㄦ樉紺鴻繖涓鏉′笂錛屽緢闅懼仛鍒伴氱敤銆傞氬父鏈変袱縐嶅吀鍨嬬殑鏍戝瀷緇撴瀯銆備竴縐嶆槸璁哄潧鐨勫笘瀛愶紝鍏剁粨鏋勫線寰閫氳繃鐖跺瓙ID鍙風浉榪?鏁版嵁鍦ㄤ竴寮犺〃閲屻備竴縐嶆槸綰у埆錛屾瘮濡傝鍧涗腑鐨凜ategory->Forum->Thread榪欑緇撴瀯錛屾暟鎹斁鍦ㄤ笉鍚岀殑琛ㄩ噷銆傚洜涓鴻鍧涙伆濂藉寘鍚簡榪欎袱縐嶇粨鏋勩傚洜姝ゃ傛垜浠氨鑳絁ive鐨勮〃緇撴瀯鏉ュ仛榪欎釜渚嬪瓙銆傞鍏堟垜浠氳繃RsMetaDataTest鏉ユ壂鎻忔暟鎹簱錛屽緱鍒伴渶瑕佺殑XML閰嶇疆鏂囦歡銆傛嬁涓涓獂ml涓轟緥錛岃В閲婁竴涓?/P>
<?xml version="1.0" encoding="UTF-8"?> </sql-map> |
鍙鏈変竴涓悕鍙玣indjivecategoryDao錛岃繖鏄竴涓吀鍨嬬殑鍔ㄦ佹煡璇€傝繑鍥炲璞℃槸HashMap銆傚叾涓?listfield$琛ㄧず鍔ㄦ佽鍙栫殑瀛楁銆傚彲浠ヨ繖涔堣錛岄氳繃榪欎釜鏌ヨ銆傛湁鍏寵繖鏍瘋〃鐨勪換浣曟柟寮忕殑鏌ヨ閮藉凡緇忚В鍐充簡銆傜敱浜庤繖涓紨紺哄彧鐢ㄥ埌鍥涘紶琛紝鍥犱簺鎴戜滑鍦╯ql-map-config-storedb.xml涔熷彧鍔犺澆浜嗗洓寮犺〃鐨勫畾涔夈?/P>
<sql-map resource="sqlmap/jivecategory.xml" /> <sql-map resource="sqlmap/jiveforum.xml" /> <sql-map resource="sqlmap/jivethread.xml" /> <sql-map resource="sqlmap/jivemessage.xml" /> |
鐒跺悗瀹氫箟MenuDefine綾伙紝榪欎釜綾繪槸涓涓氱敤鐨勫畾涔夛紝鍏朵富瑕佸睘鎬у涓嬨傚彲浠ラ氳繃瀹冨緩绔嬩竴涓洓寮犺〃鐨勬爲褰㈠叧緋匯?/P>
//sql Map鐨勫悕縐? private String sqlMapName; //璋冪敤鐨勬煡璇㈠悕縐?BR>private String SqlName; //瀛愯彍鍗曠殑鍚嶇О private String submenuName; //瀵瑰簲瀛楁錛屽叾涓璳ey涓轟富琛ㄧ殑瀛楁錛寁alue鏄粠琛ㄧ殑瀛楁銆?BR>private HashMap keymap; |
鐒跺悗寤虹珛涓涓猉ML鐨勬枃浠?姝ゅ綆鍖栦簡瀹冪殑鍔熻兘錛屽氨鏄妸涓婇潰榪欎釜綾誨簭鍒楀寲浜嗕竴涓?銆傛妸瀹冩斁鍦╟lasses鐩綍涓嬨?/P>
<?xml version="1.0" encoding="UTF-8"?> |
鍏寵仈鍏崇郴鏄?SPAN class=style3>category琛ㄩ氳繃CATEGORYID涓?SPAN class=style3>forum鍏寵仈錛?SPAN class=style3>forum閫氳繃FORUMID涓?SPAN class=style3>thread鍏寵仈錛?SPAN class=style3>thread鏄竴寮犵壒孌婄殑琛ㄣ傚畠?yōu)畣涓嶆槃·哄湪鏍戜腑锛屽彧鏄竴涓繃娓″叧鑱旓紝鐢ㄤ簬璇誨嚭鏂板緩鐨勬枃绔犮?/P>
thread閫氳繃FORUMID銆?SPAN class=style3>FORUMID銆?SPAN class=style3>ROOTMESSAGEID涓?SPAN class=style3>message琛ㄥ叧鑱?FORUMID銆?SPAN class=style3>FORUMID銆?SPAN class=style3>MESSAGEID)銆傝宮essage琛ㄦ槸涓涓嚜鍏寵仈鐨勮〃銆?SPAN class=style3>MESSAGEID涓?SPAN class=style3>PARENTMESSAGEID鍏寵仈寤虹珛鐖跺瓙鍏崇郴銆?/P>
鐒跺悗鎴戜滑寤虹珛涓涓猻ession綾諱綔涓轟富瑕佺被
public class TreeDemoSession { //閫氳繃鍚嶇О鍜屽弬鏁版潵寰楀埌鏍? public MenuComponent getMenu(String name, Map keys) throws Exception { Map menuMap = (Map) (new XmlUtils().read(Service.getPath() + "/menu.xml")); MenuComponent menu = new MenuComponent(); if (menuMap.get(name) != null) { MenuDefine rootMenudefine = (MenuDefine) menuMap.get(name); menu.setTitle(rootMenudefine.getTitle()); menu.setName(rootMenudefine.getMenuName()); menu = submenuAdd(menu, keys, menuMap, name); } return menu; } /**涓涓吀鍨嬬殑閫掑綊鍑芥暟銆傜敤浠ョ粍緇囨爲銆? * @param menu * @param map * @param menuMap * @param menuName * @return * @throws DaoException * @throws Exception */ private MenuComponent submenuAdd( MenuComponent menu, Map map, final Map menuMap, String menuName) throws DaoException, Exception { try { //寰楀埌鑿滃崟瀹氫箟 MenuDefine menudefine = (MenuDefine) menuMap.get(menuName); //listfield,琛ㄧず闇瑕佽鍙栧摢鍑犱釜瀛楁 map.put("listfield", menudefine.getListField()); //鏌ヨ錛岃繑鍥炲垪琛ㄣ? List list = DaoCommon.findbyName(map, menudefine.getSqlName()); int namei = 0; for (Iterator iter = list.iterator(); iter.hasNext();) { Map element = (Map) iter.next(); //寤虹珛褰撳墠鑺傜偣 MenuComponent submenu = new MenuComponent(); submenu.setName(menu.getName() + String.valueOf(namei++)); submenu.setTitle( String.valueOf(element.get(menudefine.getTitleField()))); //濡傛灉涓嶉渶瑕佹樉紺猴紝鍒欎嬌鐢ㄧ埗鑺傜偣浣滀負褰撳墠鑺傜偣 if (!menudefine.isNeedShow()) submenu = menu; //濡傛灉鏈夊瓙鑿滃崟錛屽垯閫掑綊璋冪敤銆? if (menudefine.getSubmenuName() != null) { submenu = submenuAdd( submenu, getSubMenuInfo(menudefine, element), menuMap, menudefine.getSubmenuName()); } //灝嗗綋鍓嶈妭鐐規(guī)斁鍒版爲涓?濡傛灉涓嶉渶瑕佹樉紺哄氨涓嶇敤鏀? if (menudefine.isNeedShow()) menu.addMenuComponent(submenu); } return menu; } catch (DaoException e) { throw e; } catch (Exception e) { throw e; } } /**灝嗙埗鑿滃崟鐨勫叧閿瓧孌電殑鍊間綔涓哄弬鏁扮粰瀛愯彍鍗? * @param menudefine * @param element * @return */ private HashMap getSubMenuInfo(MenuDefine menudefine, Map element) { HashMap map = new HashMap(); for (Iterator iter = menudefine.getKeymap().keySet().iterator(); iter.hasNext(); ) { String key = (String) iter.next(); map.put(menudefine.getKeymap().get(key), element.get(key)); } return map; } } |
涓変釜鍑芥暟錛岄潪甯哥畝鍗曪紝涓誨嚱鏁拌鍙栭厤緗枃浠剁殑鍐呭銆備竴涓掑綊鍑芥暟鐢ㄦ潵寤虹珛鏍戝艦緇撴瀯銆傝繖媯墊爲鍙湁涓や釜灞炴ц璁劇疆銆備竴涓槸鍚嶅瓧鍜屾爣棰樸傚叾涓爣棰橀噰鐢ㄤ粠鏁版嵁搴撻噷璇誨嚭鐨勫瓧孌點傚悕瀛楀垯閲囩敤嫻佹按鍙楓傝鍙栨暟鎹簱鍙湁涓鍙?鍏朵腑map鏄弬鏁扮殑涓涓垪琛ㄣ傚悗闈㈡槸sql鐨勫悕瀛椼?/P>
List list = DaoCommon.findbyName(map, menudefine.getSqlName()); |
鑰岀湡姝g殑瀹炵幇浠g爜涔熼潪甯哥畝鍗?/P>
public static List findbyName(Object vo,String name) throws DaoException { try { SqlMap sqlMap = DaoCommon.getSqlMap(DaoCommon.getDefautDao()); return (List) sqlMap.executeQueryForList(name, vo); } catch (Exception e) { throw new DaoException(e); } } |
涓嬮潰鎴戜滑鏉ュ仛Action鐨勫伐浣?/P>
public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { Service.initSet(); HashMap parMap = new HashMap(); DaoCommon.rollBack(); return mapping.findForward(request.getParameter("type")); |
榪欎釜鍑芥暟涔熼潪甯哥畝鍗曪紝灝辨槸鎶婁粠request浼犳潵鐨勫唴瀹圭敓鎴愪竴涓狹ap瀵硅薄銆傜劧鍚庤皟鐢╯ession,灝嗚繑鍥炵粨鏋滀互com.ewuxi.champion.menu涓哄悕瀛椾繚瀛樺埌request涓幓銆?/P>
鏈鍚庢垜浠渶瑕佺敓鎴愪竴涓嚜瀹氫箟鐨則aglib銆傚疄闄呬笂寰堢畝鍗曘傚彧鏄洜涓簊truts-menu鑷韓鐨則aglib鏄啓姝諱簡錛屾垜浠笉鑳藉埄鐢紝涓嶈繃鍙鏀逛竴涓湴鏂瑰氨鍙互浜?copy UseMenuDisplayerTag鍒版垜浠殑鐩綍涓嬨?/P>
MenuRepository repository = (MenuRepository) pageContext.getServletContext().getAttribute(MenuRepository.MENU_REPOSITORY_KEY); if (repository == null) { MenuComponent menu = repository.getMenu(this.name); |
鎵懼埌涓婇潰榪欎竴孌碉紝鏀規(guī)垚
MenuComponent menu = (MenuComponent) pageContext.findAttribute(this.name); |
灝監(jiān)K浜嗐傜劧鍚庨渶瑕佸緩绔嬩竴涓狫SP鏂囦歡銆傛垜浠妸xtree.jsp鍊熺敤榪囨潵銆傚敮涓闇瑕佹敼鐨勫氨鏄?lt;cp:displayMenu name="com.ewuxi.champion.menu"/>錛屽綋鐒惰繕鏈夊嚑涓猯ink鐨勮礬寰勩傚洜涓烘澶勭敤treeDemo鏉ユ墍浠ュ氨鏄痟ref="/treeDemo/styles/xtree.css"
<head> <title>XTree (with Velocity) Example</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type="text/css" media="screen" </head> <div class="container"> </menu:useMenuDisplayer> |
涓嬮潰灝卞彲浠ヨ嚜鐢辯殑鐪嬫晥鏋滀簡銆?/P>
<p><a href="demo.do?type=demo&menuName=category" target="_blank">澶у垎綾誨垪琛?lt;/a> </p> <p><a href="demo.do?type=demo&menuName=forum" target="_blank">瀛愬垎綾誨垪琛?lt;/a> </p> <p><a href="demo.do?type=demo&menuName=forum&FORUMID=1" target="_blank">鍙湅java鍒嗙被</a> </p> <p><a href="demo.do?type=demo&menuName=thread" target="_blank">鎵鏈夋枃绔?lt;/a> </p> |
涓婇潰鏄嚑縐嶄笉鍚岀殑鍙傛暟銆備富瑕佺殑宸埆鏄痬enuName涓嶅悓銆傜劧鍚庝篃鍙互鍔犳暟鎹簱闇瑕佺殑鍙傛暟錛屾瘮濡俲ava鍒嗙被鐨刦orumId=1銆傚氨鍦ㄥ弬鏁頒腑鍔燜ORUMID=1,娉ㄦ剰澶у皬鍐欒璺焁ML涓殑鍔ㄦ佸弬鏁扮浉鍚岋紝姝ゅ鍏ㄦ槸澶у啓銆?/P>
鍦ㄧ嚎婕旂ず鐪嬭繖鏍?A >http://demo.ewuxi.com:8000/treejivedemo/,
婧愮爜涓嬭澆
http://champion.ewuxi.com/old/opensource/struts-new/treeDemo.rar
鍦ㄥ仛hbiernate鐨刴any-to-many鐨勫弻鍚戝叧鑱旀椂錛屼竴鏂硅璁劇疆inverse="true"錛屽彟涓鏂硅璁劇疆inverse="false"銆俰nverse="false"鐨勪竴鏂逛繚瀛樻椂錛岀淮鎶ゅ瀵瑰涔嬮棿鐨勫叧緋伙紝涓斿彧瑕佸皢鐩鎬簰鐨勫叧緋誨憡璇夎繖涓鏂瑰嵆鍙?/P>
濡傛灉inverse閮借緗負true錛屽弻鏂圭殑鍏崇郴灝嗛兘涓嶅埌緇存姢銆?/P>
濡傛灉閮借緗負false錛屽弻鏂瑰皢鍏卞悓緇存姢涔嬮棿鐨勫叧緋伙紝榪欐椂錛岃灝嗗弻鏂圭殑鍖呭惈鍏崇郴閮借璁劇疆娓呮錛屽惁鍒欏皢浼氬鑷村叧緋葷淮鎶ゆ販涔便?/P>
濡傛灉璁劇疆浜哻asade="save-update"錛屽彧鑳借緗竴鏂癸紝濡傛灉鍙屾柟閮借緗殑璇濓紝褰撴洿鏂頒竴鏂圭殑鏃跺欙紝鍚屾椂浼氭洿鏂板彟涓鏂癸紝鍙︿竴鏂圭殑鏇存柊鍙堜細瀵艱嚧涓鏂圭殑鏇存柊銆?BR>
lazy loading鎸囩殑鏄綋瀹為檯瑕佷嬌鐢ㄥ埌鏌愪釜鏁版嵁瀛楁鏃跺欙紝鎵嶅皢鍏朵粠鏁版嵁搴撲腑鍘誨嚭錛岄伩鍏嶅唴瀛樼殑嫻垂銆?BR>
inverse . inverse榛樿鏄痜alse .褰撲綘鎸囧畾inverse="true" cascade="none" 鏃訛紝榪欎釜瀹炰綋瀵硅繖涓睘鎬ф槸娌℃湁鎸佷箙鏇存柊鐨勬潈鍒╃殑錛屽畠鎶婅繖涓睘鎬х殑綆$悊鏉冨埄瀹屽叏浜ょ粰浜嗗叧鑱旂殑鍙︿竴鏂逛簡銆?/P>