form表單回寫技術(shù)java實(shí)現(xiàn)
本文實(shí)例為大家分享了form表單回寫技術(shù),供大家參考,具體內(nèi)容如下
回寫支持的java拼js的方法:
/**
* 回寫表單
*
* @param mRequest
* @return
*/
public static String writeBackMapToForm(Map mRequest) {
return writeBackMapToForm(mRequest, new String[]{}, "writeBackMapToForm");
}
/**
* 回寫表單
*
* @param mRequest
* @param ignoreName 定義哪些key值的input不回寫
* @return
*/
public static String writeBackMapToForm(Map mRequest, String[] ignoreName, String jsFunctionName) {
mRequest.remove("checkbox_template"); //不回寫列表中checkbox的值
StringBuffer rtValue = new StringBuffer();
rtValue.append(" var mForm = new Object();\n");
rtValue.append(" var indexArray = new Array();\n");
rtValue.append(" function writeBackMapToForm() {\n");
Iterator itMRequest = mRequest.keySet().iterator();
while (itMRequest.hasNext()) {
String tempKey = (String) itMRequest.next();
Object tempValue = mRequest.get(tempKey);
if (tempKey.startsWith("VENUS") || tempKey.startsWith("RANMIN")) {
continue;
}
if (RmStringHelper.ArrayContainString(ignoreName, tempKey)) {
continue;
}
String tempValueNew = "";
if (tempValue instanceof String) { //如果是單值,直接注入
tempValueNew = RmStringHelper.replaceStringToScript((String)tempValue); //從數(shù)據(jù)庫(kù)中取出來以后需要轉(zhuǎn)換1次
rtValue.append(" indexArray[indexArray.length] = \"" + tempKey + "\";\n");
rtValue.append(" mForm[\"" + tempKey + "\"] = \"" + tempValueNew + "\";\n");
} else if (tempValue instanceof String[]) { //如果是多值,放入數(shù)組
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 (int i = 0; i < myArray.length; i++) {
if (i > 0)
rtValue.append(",");
tempValueNew = RmStringHelper.replaceStringToScript(myArray[i]);
rtValue.append("\"" + tempValueNew + "\"");
}
rtValue.append("];\n");
}
} else if (tempValue instanceof Timestamp) { //如果是時(shí)間戳,直接注入
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");
} else if (tempValue instanceof BigDecimal){
tempValueNew = RmStringHelper.replaceStringToScript(tempValue.toString());
rtValue.append(" indexArray[indexArray.length] = \""
+ tempKey + "\";\n");
rtValue.append(" mForm[\"" + tempKey + "\"] = \""
+ tempValueNew + "\";\n");
} else {
if(tempValue != null) {
RmStringHelper.log("在回寫頁(yè)面時(shí),遇到了未知java類型:" + tempValue);
}
continue;
}
}
rtValue.append(" for(var i=0; i<indexArray.length; i++) {\n");
rtValue.append(" writeBackValue(indexArray[i]);\n");
rtValue.append(" }\n");
rtValue.append(" }\n");
rtValue.append(jsFunctionName + "();\n");
return rtValue.toString();
}
//通過此方法將request中的值放入mForm對(duì)象中
var mForm = new Object();
var indexArray = new Array();
function writeBackMapToForm() {
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(var i=0; i<indexArray.length; i++) {
writeBackValue(indexArray[i]);
}
}
writeBackMapToForm();
關(guān)鍵語句jsp頁(yè)面中加入后輸出調(diào)用js方法:
<script language="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))); //輸出表單回寫方法的腳本
}
Map mapt = (java.util.Map)request.getAttribute(RuleExamineConstants.REQUEST_WRITE_BACK_FORM_VALUES);
System.out.print("infois:"+mapt.entrySet());
out.print("alert(1);");
%>
</script>
//上面語句實(shí)際上注入的js格式內(nèi)容如:
var mForm = new Object();
var indexArray = new Array();
function writeBackMapToForm() {
indexArray[indexArray.length] = "_function_id_";
mForm["_function_id_"] = "3670212500000000050";
indexArray[indexArray.length] = "cmd";
mForm["cmd"] = "listBusinessTypePage";
for(var i=0; i<indexArray.length; i++) {
writeBackValue(indexArray[i]);
}
}
writeBackMapToForm();
//注入后調(diào)用js回寫表單方法
function writeBackValue(inputName) {
if(form.elements[inputName] == undefined) {
return false;
}
if(form.elements[inputName].value != undefined) {
form.elements[inputName].value = mForm[inputName];
}
if(form.elements[inputName].length != undefined ) {
var thisValue = mForm[inputName];
if(mForm[inputName][0] == undefined) {
thisValue = new Array();
thisValue[thisValue.length] = mForm[inputName];
}
if(form.elements[inputName].length != null) {
var tempLength = form.elements[inputName].length;
for(var j=0; j<tempLength; j++) {
var thisObj = form.elements[inputName][j];
for(var k=0; k<thisValue.length; k++) {
if(thisObj.value == thisValue[k]) {
if( thisObj.checked != undefined) {
thisObj.checked = true;
break;
} else if( thisObj.selected != undefined) {
thisObj.selected = true;
break;
}
} else {
if( thisObj.checked != undefined) {
thisObj.checked = false;
} else if( thisObj.selected != undefined) {
thisObj.selected = false;
}
}
}
}
}
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
相關(guān)文章
Spring+Quartz配置定時(shí)任務(wù)實(shí)現(xiàn)代碼
這篇文章主要介紹了Spring+Quartz配置定時(shí)任務(wù)實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
spring boot實(shí)現(xiàn)自動(dòng)輸出word文檔功能的實(shí)例代碼
這篇文章主要介紹了spring boot實(shí)現(xiàn)自動(dòng)輸出word文檔功能的實(shí)例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
SpringBoot整合Shiro的環(huán)境搭建教程
這篇文章主要為大家詳細(xì)介紹了SpringBoot整合Shiro的環(huán)境搭建教程,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解一下2022-12-12
mybatis 通過攔截器打印完整的sql語句以及執(zhí)行結(jié)果操作
這篇文章主要介紹了mybatis 通過攔截器打印完整的sql語句以及執(zhí)行結(jié)果操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-10-10
Java中線程的等待與喚醒_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
在Object.java中,定義了wait(), notify()和notifyAll()等接口。wait()的作用是讓當(dāng)前線程進(jìn)入等待狀態(tài),同時(shí),wait()也會(huì)讓當(dāng)前線程釋放它所持有的鎖。下面通過本文給大家介紹Java中線程的等待與喚醒知識(shí),感興趣的朋友一起看看吧2017-05-05

