基于網友的要求,我貼出在項目中用到的三級聯動的代碼:
jsp的代碼:
<%@?page?contentType?=?"text/html;?charset=GBK"??import="java.util.*,com.wehave.hyerp.procurement.domain.Cgsqd"%>
<%@?taglib?uri="struts-html"?prefix="html"?%>
<%@?taglib?uri="struts-logic"?prefix="logic"?%>
<%@?taglib?uri="struts-bean"?prefix="bean"?%>
<html>
????<head>
????????<title>?</title>
????????<link?rel?=?"stylesheet"?type?=?"text/css"?href?=?"../css/olstyle.css">????
????????<SCRIPT?type="text/javascript">
????????var?req;

????????window.onload=function()
{
????????}
????????
????????function?Change_Select()

????????
{
????????????var?zhi=document.getElementById('m_gykfwzlbb_lbbm').value;
????????????var?url="sqdSelect.go?method=getSkill&id="+zhi;

????????????if(zhi=="0")
{
????????????????alert("請選擇您要察看的信息");
???????????????????return;

????????????}else
{
????????????????if(window.XMLHttpRequest)

????????????????
{
????????????????????req=new?XMLHttpRequest();
????????????????}else?if(window.ActiveXObject)

????????????????
{
????????????????????req=new?ActiveXObject("Microsoft.XMLHTTP");
????????????????}
????????????????
????????????????if(req)

????????????????
{
????????????????????req.open("GET",url,true);
????????????????????req.onreadystatechange=callback;
????????????????????req.send(null);
????????????????}
????????????}
????????}
????????
????????function?Change_Select2()

????????
{
????????????var?zhi=document.getElementById('m_lbbm_se').value;
????????????//alert(zhi.substring(0,2));

????????????if(zhi=="0")
{
????????????????alert("請選擇您要察看的信息");
???????????????????return;
???????????????}

????????????if(zhi.substring(0,2)=="WY")
{
????????????????var?url="sqdSelect.go?method=getSkill2&id="+zhi;
????????????????if(window.XMLHttpRequest)

????????????????
{
????????????????????req=new?XMLHttpRequest();
????????????????}else?if(window.ActiveXObject)

????????????????
{
????????????????????req=new?ActiveXObject("Microsoft.XMLHTTP");
????????????????}
????????????????
????????????????if(req)

????????????????
{
????????????????????req.open("GET",url,true);
????????????????????req.onreadystatechange=callback2;
????????????????????req.send(null);
????????????????}

????????????}else
{
????????????????parent.topFram.location?="sqdSelectAll.go?method=getlistAll&id="+zhi;
????????????}
????????}
????????
????????function?Change_Select3()

????????
{
????????????var?zhi=document.getElementById('m_lbbm_th').value;
????????????//alert(zhi.substring(0,2));

????????????if(zhi=="0")
{
????????????????alert("請選擇您要察看的信息");
???????????????????return;

???????????????}else
{
????????????????parent.topFram.location?="sqdSelectAll.go?method=getlistAll2&id="+zhi;
????????????}
????????}
????????
????????function?callback()

????????
{
????????????if(req.readyState?==?4)

????????????
{
????????????????if(req.status?==?200)

????????????????
{
????????????????????parseMessage();

????????????????}else
{
????????????????????alert("Not?able?to?retrieve?description"+req.statusText);
????????????????}
????????????}
????????}
????????
????????function?callback2()

????????
{
????????????if(req.readyState?==?4)

????????????
{
????????????????if(req.status?==?200)

????????????????
{
????????????????????parseMessage2();

????????????????}else
{
????????????????????alert("Not?able?to?retrieve?description"+req.statusText);
????????????????}
????????????}
????????}
????????
????????function?parseMessage()

????????
{
????????????var?xmlDoc=req.responseXML.documentElement;
????????????var?xSel=xmlDoc.getElementsByTagName('select');
????????????var?select_root=document.getElementById('m_lbbm_se');
????????????select_root.options.length=0;
????????????
????????????for(var?i=0;i<xSel.length;i++)

????????????
{
????????????????var?xValue=xSel[i].childNodes[0].firstChild.nodeValue;
????????????????var?xText=xSel[i].childNodes[1].firstChild.nodeValue;
????????????????var?option=new?Option(xText,xValue);

????????????????try
{
????????????????????select_root.add(option);

????????????????}catch(e)
{
????????????????}
????????????}
????????}
????????
????????function?parseMessage2()

????????
{
????????????var?xmlDoc=req.responseXML.documentElement;
????????????var?xSel=xmlDoc.getElementsByTagName('select');
????????????var?select_root=document.getElementById('m_lbbm_th');
????????????select_root.options.length=0;
????????????
????????????for(var?i=0;i<xSel.length;i++)

????????????
{
????????????????var?xValue=xSel[i].childNodes[0].firstChild.nodeValue;
????????????????var?xText=xSel[i].childNodes[1].firstChild.nodeValue;
????????????????var?option=new?Option(xText,xValue);

????????????????try
{
????????????????????select_root.add(option);

????????????????}catch(e)
{
????????????????}
????????????}
????????}
????????
????????
????????
????</SCRIPT>
????</head>

<body?bgcolor?=?"#C8D0D4">
????<html:form?action="/cgsqdNewAction.go">?
????<TABLE?class?=?"cbToolbar"?id?=?"idToolbar"?cellpadding?=?'0'?cellspacing?=?'0'>
????????<TR?align?=?"left"?valign?=?"top"?>
????????????<TD??NOWRAP> 物質類別:
????????????????<html:select?property="m_gykfwzlbb_lbbm"?onchange="Change_Select()">
????????????????????<html:option?value="0">請選擇</html:option>
???????????????????????<html:options?collection="LbfList"?property="m_gykfwzlbb_lbbm"?labelProperty="m_gykfwzlbb_lbmc"/>
????????????????</html:select>?
????????????????<html:select?property="m_lbbm_se"?styleId="m_lbbm_se"?onchange="Change_Select2()">
????????????????????<html:option?value="0"> </html:option>
????????????????</html:select>
????????????????<html:select?property="m_lbbm_th"?styleId="m_lbbm_th"?onchange="Change_Select3()">
????????????????????<html:option?value="0"> </html:option>
????????????????</html:select>
????????????????
????????????</TD>
????????????
????????</tr>
????</table>
?????</html:form>
</body>
</html>

action中的代碼:

/**?*//**
?????*?
?????*?查詢物質編碼類別列表操作(一級)
?????*?*/
????public?ActionForward?doSelectWzlb(
????????????ActionMapping?mapping,
????????????ActionForm?form,
????????????HttpServletRequest?req,

????????????HttpServletResponse?res)?
{
????????HttpSession?session?=?req.getSession();
????????UserSession?userSession?=
????????????(UserSession)?session.getAttribute("userSession");
????????permission.setUserID(userSession.getUserId());
????????permission.setUserName(userSession.getUserName());
????????permission.setModuleName("m_cgsqd");
????????permission.setActionStr("'m_select'");

????????if(permissionService.checkUserPermission(permission))
{
????????????int?updateSign=0;

????????????try
{
????????????????cgsqdService.updateCgsqwzhzb_sqsl();
????????????????updateSign=1;

????????????}catch(Exception?e)
{
????????????????e.printStackTrace();
????????????????updateSign=0;
????????????}

????????????if(updateSign==1)
{
????????????????List?LbfList=cgsqdService.treeListWzlb2();
????????????????req.setAttribute("LbfList",LbfList);
????????????????return?mapping.findForward("tools");

????????????}else
{
????????????????return?null;
????????????}

????????}else
{
????????????return?mapping.findForward("failure");
????????}
????}
????

????/**?*//**
?????*?
?????*?查詢物質編碼類別列表操作(二級)
?????*?*/
????public?ActionForward?doSelectWzlb1(
????????????ActionMapping?mapping,
????????????ActionForm?form,
????????????HttpServletRequest?req,

????????????HttpServletResponse?res)?
{
????????HttpSession?session?=?req.getSession();
????????UserSession?userSession?=
????????????(UserSession)?session.getAttribute("userSession");
????????permission.setUserID(userSession.getUserId());
????????permission.setUserName(userSession.getUserName());
????????permission.setModuleName("m_cgsqd");
????????permission.setActionStr("'m_select'");

????????if(permissionService.checkUserPermission(permission))
{
????????????int?updateSign=0;

????????????try
{
????????????????cgsqdService.updateCgsqwzhzb_sqsl();
????????????????updateSign=1;

????????????}catch(Exception?e)
{
????????????????e.printStackTrace();
????????????????updateSign=0;
????????????}

????????????if(updateSign==1)
{
????????????????List?LbfList=cgsqdService.treeListWzlb2();
????????????????req.setAttribute("LbfList",LbfList);
????????????????return?mapping.findForward("tools1");

????????????}else
{
????????????????return?null;
????????????}

????????}else
{
????????????return?mapping.findForward("failure");
????????}
????}
????

????/**?*//**
?????*?
?????*?查詢物質編碼類別列表操作(三級)
?????*?*/
????public?ActionForward?getSkill(
????????????ActionMapping?mapping,
????????????ActionForm?form,
????????????HttpServletRequest?req,

????????????HttpServletResponse?res)?
{
????????HttpSession?session?=?req.getSession();
????????UserSession?userSession?=
????????????(UserSession)?session.getAttribute("userSession");
????????permission.setUserID(userSession.getUserId());
????????permission.setUserName(userSession.getUserName());
????????permission.setModuleName("m_cgsqd");
????????permission.setActionStr("'m_select'");

????????if(permissionService.checkUserPermission(permission))
{
????????????String?id=req.getParameter("id");
????????????
????????????res.setContentType("text/xml;charset=GBK");
????????????res.setHeader("Cache-Control","no-cache");
????????????String?xml_start="<?xml?version=\"1.0\"?encoding=\"GBK\"?>";
????????????xml_start+="<selects>";
????????????String?xml_end="</selects>";
????????????String?xml="<select><value>0</value><text>請選擇</text></select>";
????????????String?m_lbbm_se="";
????????????String?m_lbmc_se="";
????????????List?LbfList=null;

????????????if(id.equals("WY"))
{
????????????????LbfList=cgsqdService.treeListWzlb3_2(id);

????????????}else
{
????????????????LbfList=cgsqdService.treeListWzlb3_1(id);????
????????????}
????????????Iterator?it=LbfList.iterator();

????????????while(it.hasNext())
{
????????????????Cgsqd?cgsqd=(Cgsqd)it.next();
????????????????m_lbbm_se=cgsqd.getM_gykfwzlbb_lbbm();
????????????????m_lbmc_se=cgsqd.getM_gykfwzlbb_lbmc();
????????????????xml?+="<select><value>"+m_lbbm_se+"</value><text>"+m_lbmc_se+"</text></select>";
????????????}
????????????String?last_xml=xml_start+xml+xml_end;
????????????logger.debug("XML是:"+last_xml);

????????????try?
{
????????????????res.getWriter().write(last_xml);

????????????}?catch?(IOException?e)?
{
????????????????e.printStackTrace();
????????????}
????????????return?null;

????????}else
{
????????????return?null;
????????}
????}主要代碼就這些,去掉一些權限大代碼,真正的代碼并不多。
posted on 2006-08-09 15:21
千山鳥飛絕 閱讀(13619)
評論(10) 編輯 收藏 所屬分類:
Ajax