- duzn
- 等级: 初级会员

- 文章: 12
- 积分: 68

|
今天抽时间写了一个关于级联菜单demo 可以实现多级级联,现已经打包供大家下载学习,自己写了一个简单的组件用来处理下拉列表框及联问题,在解析js脚本中的 parseXml(xmlDom)含糊还存在一些不足,处理同名的下拉列表框(根据生成的xml文件的index属性来处理),我会尽快完善,并会增加其他的功能,
希望这个设计对大家有所帮助,如果大家有好的想法,就请指正,谢谢!
java 代码
- 源码1:
-
- package duzn.soa;
-
- import java.io.IOException;
- import java.io.PrintWriter;
-
- import javax.servlet.http.HttpServletResponse;
-
- public class SOAData {
-
- private StringBuffer sb = new StringBuffer();
- private String objName = "";
-
- public String getXmlDoc(){
- return sb.toString();
- }
-
- public void beginSelectOptions(String objName){
- this.objName = objName;
- sb.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>");
- sb.append("<root>");
- sb.append("<" + objName + " type=\"select\">");
- }
-
- public void beginSelectOptions(String objName, int index){
- this.objName = objName;
- sb.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>");
- sb.append("<root>" + "\n");
- sb.append("<" + objName + " type=\"select\" index=\"" + index + "\">");
- }
-
- public void addSelectOption(String objContent, String objValue){
- sb.append("<option value=\"" + objValue + "\">");
- sb.append(objContent + "</option>");
- }
-
- public void endSelectOptions(){
- sb.append("</" + this.objName + ">");
- sb.append("</root>");
- }
-
- public void soaWrite(HttpServletResponse response){
-
- response.setContentType("text/xml; charset=GB2312");
- response.setHeader("Cache-Control","no-cache");
- try {
- PrintWriter pw = response.getWriter();
- pw.println(getXmlDoc());
- pw.flush();
- pw.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
-
-
-
-
-
-
-
-
-
- }
java 代码
- package duzn.soa;
-
- import java.io.IOException;
-
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
-
- public class SelectServlet extends HttpServlet{
-
- @Override
- protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- String fieldName = request.getParameter("fieldName");
- int branchId = 0;
- try {
- branchId = Integer.parseInt(request.getParameter("branchId"));
- } catch (NumberFormatException e) {
- branchId = 1;
- System.out.println(e.getMessage());
- }
-
- SOAData soaData = new SOAData();
- soaData.beginSelectOptions(fieldName);
- soaData.addSelectOption("--请选择--", "0");
-
- if(branchId == 1){
- soaData.addSelectOption("办公室", "1");
- soaData.addSelectOption("财务处", "2");
- soaData.addSelectOption("党工办", "3");
- }else if(branchId == 2){
- soaData.addSelectOption("计算机系", "1");
- soaData.addSelectOption("经管系", "2");
- soaData.addSelectOption("电子系", "3");
- }
-
- soaData.endSelectOptions();
- System.out.println(soaData.getXmlDoc());
- soaData.soaWrite(response);
- }
-
-
- }
xml 代码 web.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.4"
- xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
- http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
-
- <servlet>
- <servlet-name>SelectServlet</servlet-name>
- <servlet-class>duzn.soa.SelectServlet</servlet-class>
- </servlet>
-
- <servlet-mapping>
- <servlet-name>SelectServlet</servlet-name>
- <url-pattern>/select.do</url-pattern>
- </servlet-mapping>
- </web-app>
js 代码 xmlhttp.js
- var xmlreq = false;
-
- function newXMLHttpRequest() {
- if (window.XMLHttpRequest) {
- xmlreq = new XMLHttpRequest();
- } else if (window.ActiveXObject) {
- try {
- xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
- } catch (e1) {
- try {
- xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
- } catch (e2) {
-
- }
- }
- }
- }
-
-
-
- function sendXml(url, param){
- if(url.length == 0){
- return;
- }else{
- if( param == null || param == "undefined" ){
- param = "";
- }
-
- newXMLHttpRequest();
- try{
- xmlreq.onreadystatechange=proce;
- xmlreq.open("GET", url, true);
- xmlreq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
- xmlreq.send(param);
- }catch(exception){
- alert("您要访问的资源不存在!");
- }
- }
- }
-
-
- function proce(){
- if(xmlreq.readyState == 4){
- if(xmlreq.status == 200 || xmlreq.status == 0){
-
- parseXml(xmlreq.responseXML);
- }else{
- window.alert("所请求的页面有异常");
- alert(xmlreq.statusText);
- }
- }
- }
-
-
- function parseXml(xmlDom){
- var rootNode = xmlDom.documentElement;
- if(rootNode == null){
- return false;
- }else{
- for(var node = rootNode.firstChild; node != null; node=node.nextSibling){
- var objName = node.nodeName;
- var type = node.getAttribute("type");
- if(type == "select"){
- clearSelectOption(objName);
- var opts = node.getElementsByTagName("option");
- for(var i=0; i<opts.length; i++){
- var optName = opts[i].firstChild.data;
- var optValue = opts[i].getAttribute("value");
- addSelectOption(objName, optValue, optName);
- }
- }
- }
- }
-
- }
-
-
- function addSelectOption(objName, optValue, optName){
- var elmtObj = document.getElementById(objName);
- elmtObj.options[elmtObj.length] = new Option(optName, optValue);
- }
-
-
- function clearSelectOption(objName){
- var elmtObj = document.getElementById(objName);
-
- while(elmtObj.options.length > 0){
- elmtObj.remove(0);
- }
-
-
- }
-
- function sendText(url, param){
- if(url.length == 0){
- return;
- }else{
- if( param == null || param == "undefined" ){
- param = "";
- }
-
- newXMLHttpRequest();
- try{
- xmlreq.onreadystatechange=getText;
- xmlreq.open("GET", url, true);
- xmlreq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
- xmlreq.send(param);
- }catch(exception){
- alert("您要访问的资源不存在!");
- }
- }
- }
-
- function getText(){
- if(xmlreq.readyState == 4){
- if(xmlreq.status == 200 || xmlreq.status == 0){
- alert(xmlreq.responseText);
- }else{
- window.alert("所请求的页面有异常");
- alert(xmlreq.statusText);
- }
- }
- }
jsp代码 index.jsp
- <%@ page contentType="text/html; charset=GB2312" pageEncoding="GB2312"%>
- <HTML>
- <HEAD>
- <TITLE> New Document </TITLE>
-
- <script lang="javascript" src="xmlhttp.js"></script>
- <script>
- function branchChange(branchId){
- sendXml('select.do?fieldName=dept&branchId='+branchId, '');
- }
- </script>
- </HEAD>
-
- <BODY>
- <div id="nn"></div>
- <form name="form1" method="post" action="">
- 机构
- <select name="branch" onchange="branchChange(this.value)">
- <option value='0'>--请选择--</option>
- <option value='1'>行政机关</option>
- <option value='2'>教学管理</option>
- </select>
- 部门
- <select name="dept"><option value="0">--请选择--</option></select>
- </BODY>
- </HTML>
- WebTest.rar (6.4 KB)
- 描述: 程序源码,解压后放在tomcat的webapps目录下可直接运行
- 下载次数: 710
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
返回顶楼 |
|
|
- liufeng
- 等级: 初级会员

- 性别:
 - 文章: 8
- 积分: 30
- 来自: 北京

|
今天终于知道怎么生成XML文件了。也知道了怎么解析它的。呵呵。谢谢楼主
|
返回顶楼 |
|
|
- salon
- 等级: 初级会员

- 文章: 1
- 积分: 82

|
firefox下有问题啊
|
返回顶楼 |
|
|