java 返回表单_form表单回写技术java实现

本文实例为大家分享了form表单回写技术,供大家参考,具体内容如下

回写支持的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); //从数据库中取出来以后需要转换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

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

writeBackValue(indexArray[i]);

}

}

writeBackMapToForm();

关键语句jsp页面中加入后输出调用js方法:

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);");

%>

//上面语句实际上注入的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

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

var thisObj = form.elements[inputName][j];

for(var k=0; 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;

}

}

}

}

}

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用Java的Servlet来接收序列化数据。首先,您需要将数据序列化为字符串,并将其作为请求参数发送到Servlet。然后,您可以使用Java的HttpServletRequest对象来获取这些参数,并将其反序列化为Java对象。 以下是一个简的示例代码,用于接收名为"formdata"的序列化数据: ```java import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class FormServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取序列化数据 String formData = request.getParameter("formdata"); // 将序列化数据反序列化为Java对象 Map<String, String> formMap = null; try (InputStream is = new ByteArrayInputStream(formData.getBytes()); ObjectInputStream ois = new ObjectInputStream(is)) { formMap = (Map<String, String>) ois.readObject(); } catch (ClassNotFoundException e) { e.printStackTrace(); } // 处理数据 String name = formMap.get("name"); String email = formMap.get("email"); // 做出响应 response.setContentType("text/html"); response.getWriter().println("<html><body>" + "<h2>Form Data Received:</h2>" + "<p>Name: " + name + "</p>" + "<p>Email: " + email + "</p>" + "</body></html>"); } } ``` 这段代码假设您的数据是一个包含"name"和"email"字段的Map对象。您可以根据需要更改此代码以适应您的数据格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值