form表单回写技术java实现
本文实例为大家分享了form表单回写技术,供大家参考,具体内容如下
回写支持的java拼js的方法:
/** *回写表单 * *@parammRequest *@return */ publicstaticStringwriteBackMapToForm(MapmRequest){ returnwriteBackMapToForm(mRequest,newString[]{},"writeBackMapToForm"); } /** *回写表单 * *@parammRequest *@paramignoreName定义哪些key值的input不回写 *@return */ publicstaticStringwriteBackMapToForm(MapmRequest,String[]ignoreName,StringjsFunctionName){ mRequest.remove("checkbox_template");//不回写列表中checkbox的值 StringBufferrtValue=newStringBuffer(); rtValue.append("varmForm=newObject();\n"); rtValue.append("varindexArray=newArray();\n"); rtValue.append("functionwriteBackMapToForm(){\n"); IteratoritMRequest=mRequest.keySet().iterator(); while(itMRequest.hasNext()){ StringtempKey=(String)itMRequest.next(); ObjecttempValue=mRequest.get(tempKey); if(tempKey.startsWith("VENUS")||tempKey.startsWith("RANMIN")){ continue; } if(RmStringHelper.ArrayContainString(ignoreName,tempKey)){ continue; } StringtempValueNew=""; if(tempValueinstanceofString){//如果是单值,直接注入 tempValueNew=RmStringHelper.replaceStringToScript((String)tempValue);//从数据库中取出来以后需要转换1次 rtValue.append("indexArray[indexArray.length]=\""+tempKey+"\";\n"); rtValue.append("mForm[\""+tempKey+"\"]=\""+tempValueNew+"\";\n"); }elseif(tempValueinstanceofString[]){//如果是多值,放入数组 rtValue.append("indexArray[indexArray.length]=\""+tempKey+"\";\n"); String[]myArray=(String[])tempValue; if(tempKey.equals("cmd")){ tempValueNew=RmStringHelper.replaceStringToScript(myArray[0]); rtValue.append("mForm[\""+tempKey+"\"]=\""+tempValueNew+"\";\n"); }else{ rtValue.append("mForm[\""+tempKey+"\"]=["); for(inti=0;i<myArray.length;i++){ if(i>0) rtValue.append(","); tempValueNew=RmStringHelper.replaceStringToScript(myArray[i]); rtValue.append("\""+tempValueNew+"\""); } rtValue.append("];\n"); } }elseif(tempValueinstanceofTimestamp){//如果是时间戳,直接注入 if(tempValue==null){ continue; } tempValueNew=RmStringHelper.replaceStringToScript(tempValue.toString().substring(0,19)); rtValue.append("indexArray[indexArray.length]=\""+tempKey+"\";\n"); rtValue.append("mForm[\""+tempKey+"\"]=\""+tempValueNew+"\";\n"); }elseif(tempValueinstanceofBigDecimal){ tempValueNew=RmStringHelper.replaceStringToScript(tempValue.toString()); rtValue.append("indexArray[indexArray.length]=\"" +tempKey+"\";\n"); rtValue.append("mForm[\""+tempKey+"\"]=\"" +tempValueNew+"\";\n"); }else{ if(tempValue!=null){ RmStringHelper.log("在回写页面时,遇到了未知java类型:"+tempValue); } continue; } } rtValue.append("for(vari=0;i<indexArray.length;i++){\n"); rtValue.append("writeBackValue(indexArray[i]);\n"); rtValue.append("}\n"); rtValue.append("}\n"); rtValue.append(jsFunctionName+"();\n"); returnrtValue.toString(); } //通过此方法将request中的值放入mForm对象中 varmForm=newObject(); varindexArray=newArray(); functionwriteBackMapToForm(){ indexArray[indexArray.length]="att_id"; mForm["att_id"]=""; indexArray[indexArray.length]="businessTypeOID"; mForm["businessTypeOID"]=[""]; indexArray[indexArray.length]="business_type1"; mForm["business_type1"]=""; indexArray[indexArray.length]="business_type2"; mForm["business_type2"]="1"; indexArray[indexArray.length]="cmd"; mForm["cmd"]="saveExamineRule"; indexArray[indexArray.length]="document_content"; mForm["document_content"]="s2"; indexArray[indexArray.length]="file_path"; mForm["file_path"]=""; indexArray[indexArray.length]="file_template"; mForm["file_template"]=""; indexArray[indexArray.length]="gxl"; mForm["gxl"]="null"; indexArray[indexArray.length]="owner_id"; mForm["owner_id"]="s1"; for(vari=0;i<indexArray.length;i++){ writeBackValue(indexArray[i]); } } writeBackMapToForm(); 关键语句jsp页面中加入后输出调用js方法: <scriptlanguage="javascript"> <%//表单回写 if(request.getAttribute(RuleExamineConstants.REQUEST_WRITE_BACK_FORM_VALUES)!=null){//如果request中取出的表单回写bean不为空 out.print(RmVoHelper.writeBackMapToForm((java.util.Map)request.getAttribute(RuleExamineConstants.REQUEST_WRITE_BACK_FORM_VALUES)));//输出表单回写方法的脚本 } Mapmapt=(java.util.Map)request.getAttribute(RuleExamineConstants.REQUEST_WRITE_BACK_FORM_VALUES); System.out.print("infois:"+mapt.entrySet()); out.print("alert(1);"); %> </script> //上面语句实际上注入的js格式内容如: varmForm=newObject(); varindexArray=newArray(); functionwriteBackMapToForm(){ indexArray[indexArray.length]="_function_id_"; mForm["_function_id_"]="3670212500000000050"; indexArray[indexArray.length]="cmd"; mForm["cmd"]="listBusinessTypePage"; for(vari=0;i<indexArray.length;i++){ writeBackValue(indexArray[i]); } } writeBackMapToForm(); //注入后调用js回写表单方法 functionwriteBackValue(inputName){ if(form.elements[inputName]==undefined){ returnfalse; } if(form.elements[inputName].value!=undefined){ form.elements[inputName].value=mForm[inputName]; } if(form.elements[inputName].length!=undefined){ varthisValue=mForm[inputName]; if(mForm[inputName][0]==undefined){ thisValue=newArray(); thisValue[thisValue.length]=mForm[inputName]; } if(form.elements[inputName].length!=null){ vartempLength=form.elements[inputName].length; for(varj=0;j<tempLength;j++){ varthisObj=form.elements[inputName][j]; for(vark=0;k<thisValue.length;k++){ if(thisObj.value==thisValue[k]){ if(thisObj.checked!=undefined){ thisObj.checked=true; break; }elseif(thisObj.selected!=undefined){ thisObj.selected=true; break; } }else{ if(thisObj.checked!=undefined){ thisObj.checked=false; }elseif(thisObj.selected!=undefined){ thisObj.selected=false; } } } } } } }
以上就是本文的全部内容,希望对大家的学习有所帮助。