本文实例为大家分享了form表单回写技术,供大家参考,具体内容如下
回写支持的java拼js的方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
|
/** * 回写表单 * * @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); //从数据库中取出来以后需要转换1次 rtValue.append( " indexArray[indexArray.length] = \"" + tempKey + "\";\n" ); rtValue.append( " mForm[\"" + tempKey + "\"] = \"" + tempValueNew + "\";\n" ); } else if (tempValue instanceof String[]) { //如果是多值,放入数组 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) { //如果是时间戳,直接注入 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( "在回写页面时,遇到了未知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对象中 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(); 关键语句jsp页面中加入后输出调用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> //上面语句实际上注入的js格式内容如: 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(); //注入后调用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 ; } } } } } } } |
以上就是本文的全部内容,希望对大家的学习有所帮助。