两级下拉框的JSP简单实现


最近经常用到二级菜单的情况,改变一个另一个跟着变化。自己写了一个简单的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> 
本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3