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;
}
}
}
}
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助。