【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>
