gpt4 book ai didi

java - spring MVC Controller 如何在ajax请求上绑定(bind)到多个模型

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

对我的 Controller 操作的发布请求来自 ajax,如下所示:

$.post("myurl.htm", { view: $("#selView").val(), 
val1: "value1", val2: "value2"
});

我有两个模型 FooBar

public class Foo {
public String val1;
//getter/setters
}

public class Bar {
public String val2;
//getters/setters
}

现在,我的 Controller 操作如下所示:

@RequestMapping(value="/myurl.htm", method=RequestMethod.POST)
public ModelAndView doSomething (
@RequestParam(value="view", required=true) String view,
@RequestParam(value="val1", required=false) String val1,
@RequestParam(value="val2", required=false) String val2) {
Foo foo = new Foo();
Bar bar = new Bar();
if (view.equalsIgnoreCase("something"))
foo.setVal1(val1);
else if (view.equalsIgnoreCase("somethingelse"))
foo.setVal2(val2);

fooService.doSomeStuffWithDb(foo);
barService.doSomeStuffWithDb(bar);

}

问题

  1. 尽管如此,上面的一切都有效,但我认为应该有更好的方法来做到这一点...?如果我在发布请求中发布了 10 个参数怎么办,我的 Controller 操作中是否会有 10 个参数?这不会很好地扩展。

  2. 那么,有没有办法让 spring 自动将参数绑定(bind)到模型上的相关 getter/setter?

最佳答案

spring 可以将请求参数作为 Map 注入(inject):

@RequestMapping(value="/foo", method=RequestMethod.POST)
public ModelAndView doSomething (@RequestParam Model<String, String> params) {
params.get("val1");
params.get("val2");
// ...
}

使用未经修改的 javascript。这不像 @ModelAttribute 版本那么优雅,但可以很好地扩展大量参数。

关于java - spring MVC Controller 如何在ajax请求上绑定(bind)到多个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13439976/

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