技术开发 频道

两级下拉框的JSP简单实现


【IT168技术文档】
    最近经常用到二级菜单的情况,改变一个另一个跟着变化。自己写了一个简单的JSP页面,大家给点意见,另外大家这种情况都是怎么做的,当然Ajax除外!
<%! public final String _JS_GET_METHOD_NAME="_do_get_second"; public final String _JS_ONE_ARRAY_NAME = "_js_one_array_name"; public final String _JS_TWO_ARRAY_NAME = "_js_two_array_name"; public final String _STYLE_WIDTH = "100"; public final String _PARAM_FORM_NAME = "cmForm"; public final String _TWO_DEFAULT_TEXT = ""; public class MenuGenParamObject{ private String paraFormName=_PARAM_FORM_NAME; private String paramOneIdField; private String paramOneNameField; private String paramLinkField; private String paramTwoIdField; private String paramTwoNameField; private String paramTwoDefaultText=_TWO_DEFAULT_TEXT; private String paramStyleWidth=_STYLE_WIDTH; private String paramJsOneArrayName=_JS_ONE_ARRAY_NAME; private String paramJsTwoArrayName=_JS_TWO_ARRAY_NAME; private String paramJsGetMethodName=_JS_GET_METHOD_NAME; private java.util.List paramTwoArrayList; private String paramPreJavascript = ""; private String paramPostJavascript = ""; private MenuGenParamObject( String paramOneIdField, String paramOneNameField, String paramLinkField, String paramTwoIdField, String paramTwoNameField, java.util.List paramTwoArrayList) { this.paramOneIdField=paramOneIdField; this.paramOneNameField=paramOneNameField; this.paramLinkField=paramLinkField; this.paramTwoIdField=paramTwoIdField; this.paramTwoNameField=paramTwoNameField; this.paramTwoArrayList=paramTwoArrayList; } public String getParaFormName() { return paraFormName; } public void setParaFormName(String paraFormName) { this.paraFormName = paraFormName; } public String getParamJsGetMethodName() { return paramJsGetMethodName; } public void setParamJsGetMethodName(String paramJsGetMethodName) { this.paramJsGetMethodName = paramJsGetMethodName; } public String getParamJsOneArrayName() { return paramJsOneArrayName; } public void setParamJsOneArrayName(String paramJsOneArrayName) { this.paramJsOneArrayName = paramJsOneArrayName; } public String getParamJsTwoArrayName() { return paramJsTwoArrayName; } public void setParamJsTwoArrayName(String paramJsTwoArrayName) { this.paramJsTwoArrayName = paramJsTwoArrayName; } public String getParamLinkField() { return paramLinkField; } public void setParamLinkField(String paramLinkField) { this.paramLinkField = paramLinkField; } public String getParamOneIdField() { return paramOneIdField; } public void setParamOneIdField(String paramOneIdField) { this.paramOneIdField = paramOneIdField; } public String getParamOneNameField() { return paramOneNameField; } public void setParamOneNameField(String paramOneNameField) { this.paramOneNameField = paramOneNameField; } public String getParamStyleWidth() { return paramStyleWidth; } public void setParamStyleWidth(String paramStyleWidth) { this.paramStyleWidth = paramStyleWidth; } public java.util.List getParamTwoArrayList() { return paramTwoArrayList; } public void setParamTwoArrayList(java.util.List paramTwoArrayList) { this.paramTwoArrayList = paramTwoArrayList; } public String getParamTwoIdField() { return paramTwoIdField; } public void setParamTwoIdField(String paramTwoIdField) { this.paramTwoIdField = paramTwoIdField; } public String getParamTwoNameField() { return paramTwoNameField; } public void setParamTwoNameField(String paramTwoNameField) { this.paramTwoNameField = paramTwoNameField; } public void setParamTwoDefaultText(String paramTwoDefaultText){ this.paramTwoDefaultText=paramTwoDefaultText; } public String getParamTwoDefaultText(){ return this.paramTwoDefaultText; } public void setParamPreJavascript(String paramPreJavascript){ this.paramPreJavascript=paramPreJavascript; } public String getParamPreJavascript(){ return this.paramPreJavascript; } public void setParamPostJavascript(String paramPostJavascript){ this.paramPostJavascript=paramPostJavascript; } public String getParamPostJavascript(){ return this.paramPostJavascript; } } public void _genMenuList(MenuGenParamObject obj,java.io.Writer out){ try{ out.write("<script language=\"javascript\">\n"); out.write("<!--\n"); out.write(obj.getParamPreJavascript()); out.write("var "+obj.getParamJsTwoArrayName()+" = new Array("+obj.
getParamTwoArrayList().size()
+");\n"); java.util.HashMap _local = null; for (int i=0;i<obj.getParamTwoArrayList().size();i++) { _local = (java.util.HashMap)obj.getParamTwoArrayList().get(i); out.write(obj.getParamJsTwoArrayName()+"["+i+"] = new Array(3);\n"); out.write(obj.getParamJsTwoArrayName()+"["+i+"][0] = '"+_local.
get(obj.getParamTwoIdField())+"';\n"); out.write(obj.getParamJsTwoArrayName()+"["+i+"][1] = '"+_local.
get(obj.getParamTwoNameField())+"';\n"); out.write(obj.getParamJsTwoArrayName()+"["+i+"][2] = '"+_local.
get(obj.getParamLinkField())+"';\n"); }
out.write("function "+obj.getParamJsGetMethodName()+"(){\n"); out.write("firstid = "+obj.getParaFormName()+"."+obj.getParamOneIdField()
+".options["+obj.getParaFormName()+"."+obj.getParamOneIdField()
+".selectedIndex].value;\n"); out.write("a = "+obj.getParaFormName()+"."+obj.getParamTwoIdField()
+".length;\n"); out.write("for (i=0;i<a;i++){\n"); out.write(obj.getParaFormName()+"."+obj.getParamTwoIdField()
+".remove(0);\n"); out.write("}\n"); out.write("op = new Option();\n"); out.write("op.text=\""+obj.getParamTwoDefaultText()+"\";\n"); out.write("op.value=\"\";\n"); out.write(obj.getParaFormName()+"."+obj.getParamTwoIdField()+".add(op);\n"); out.write("if (firstid==0){\n"); out.write("return;\n"); out.write("}\n"); out.write("for (i=0;i<"+obj.getParamJsTwoArrayName()+".length;i++){\n"); out.write("if ("+obj.getParamJsTwoArrayName()+"[i][2]==firstid)\n"); out.write("{\n"); out.write("op1 = new Option();\n"); out.write("op1.value = "+obj.getParamJsTwoArrayName()+"[i][0];\n"); out.write("op1.text = "+obj.getParamJsTwoArrayName()+"[i][1];\n"); out.write(obj.getParaFormName()+"."+obj.getParamTwoIdField()
+".options.add(op1);\n"); out.write("}\n"); out.write("}\n"); out.write(obj.getParaFormName()+"."+obj.getParamTwoIdField()
+".style.width="+obj.getParamStyleWidth()+";\n"); out.write("}\n"); out.write(obj.getParamPostJavascript()); out.write("//-->\n"); out.write("</script>\n"); }
catch(Exception ex) { } }
public java.util.List _getTwoMenuList( java.util.List twoList, String parentid, String linkField, String twoIdField, String twoNameField){ java.util.HashMap _local = null; String linkValue = ""; java.util.List ret = new java.util.ArrayList(); for (int i=0;i<twoList.size();i++) { _local = (java.util.HashMap)twoList.get(i); linkValue = "" + _local.get(linkField); if (parentid.equals(linkValue)) { ret.add(_local); } } return ret; } %> <!--以下为测试代码--> <% java.util.List paramOneArrayList = new java.util.ArrayList(); java.util.Map a = new java.util.HashMap(); a.put("compid","1"); a.put("compname","公司一"); java.util.Map b = new java.util.HashMap(); b.put("compid","2"); b.put("compname","公司二"); java.util.Map c = new java.util.HashMap(); c.put("compid","3"); c.put("compname","公司三"); paramOneArrayList.add(a); paramOneArrayList.add(b); paramOneArrayList.add(c); java.util.List paramTwoArrayList = new java.util.ArrayList(); java.util.Map a1 = new java.util.HashMap(); a1.put("compid","1"); a1.put("deptid","10"); a1.put("deptname","行政部"); java.util.Map b1 = new java.util.HashMap(); b1.put("compid","1"); b1.put("deptid","20"); b1.put("deptname","财务部"); java.util.Map c1 = new java.util.HashMap(); c1.put("compid","2"); c1.put("deptid","30"); c1.put("deptname","市场部"); paramTwoArrayList.add(a1); paramTwoArrayList.add(b1); paramTwoArrayList.add(c1); MenuGenParamObject obj = new MenuGenParamObject
(
"compid","compname","compid","deptid","deptname",paramTwoArrayList); _genMenuList(obj,out); %> <form name="<%=_PARAM_FORM_NAME%>"> 公司名称<select name="compid" onchange=
"<%=_JS_GET_METHOD_NAME%>();" style="width:100"> <option value=""></option> <option value="1">公司一</option> <option value="2">公司二</option> <option value="3">公司三</option> </select> 部门名称 <select name="deptid" style="width:<%=_STYLE_WIDTH%>"> </select> </form>
0
相关文章