gpt4 book ai didi

java - 在 Spring Controller 的操作参数中,序列化的 ajax 表单会被转换为什么类型的对象?

转载 作者:行者123 更新时间:2023-11-30 05:10:19 25 4
gpt4 key购买 nike

如果 HTML 表单包含多个输入字段:

 <form>
<input id="in1" type="text" value="one">
<input id="in2" type="text" value="two">
<input id="in3" type="text" value="three">
</form>

并以序列化形式传递给 Spring Controller ,如下所示:

new Ajax.Request('/doajax', 
{asynchronous:true, evalScripts:true,
parameters: $('ajax_form').serialize(true)});

在 Spring 3 Controller 中读取序列化的 ajax_form 需要什么 Java 类型?

@RequestMapping("/doajax")
@ResponseBody
public String doAjax(@RequestParam <?Type> ajaxForm
{
// do something
}

最佳答案

首先,您使用没有 name 的表单字段,因此 serialize() 实际上会产生一个空结果。添加名称:

<form> 
<input name = "in1" id="in1" type="text" value="one">
<input name = "in2" id="in2" type="text" value="two">
<input name = "in3" id="in3" type="text" value="three">
</form>

我猜您使用的是 Prototype,因此 parameters: $('ajax_form').serialize(true) 会生成表单的 URL 编码表示形式(而且您也不需要 true 这里,它增加了不必要的转换)。由于 @RequestParam 无法绑定(bind)复杂类型,因此您可以将字段绑定(bind)为单独的参数:

public String doAjax(@RequestParam("in1") String in1, 
@RequestParam("in2") String in2, @RequestParam("in2") String in2)

您还可以创建一个类来保存表单数据并将其作为模型属性传递:

public class AjaxForm {
private String in1;
private String in2;
private String in3;

... getters, setters ...
}

-

public String doAjax(AjaxForm form)

关于java - 在 Spring Controller 的操作参数中,序列化的 ajax 表单会被转换为什么类型的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3644523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com