Spring mvc 如何在Spring3.0中绑定请求参数?
我正在构建一个控制器,它接受来自第三方服务的请求。此服务有5个请求参数,我需要将其绑定到Spring mvc 如何在Spring3.0中绑定请求参数?,spring-mvc,Spring Mvc,我正在构建一个控制器,它接受来自第三方服务的请求。此服务有5个请求参数,我需要将其绑定到消息类 喂,我在请求,我得到 ?a=x&b=y&c=z&d=w&e=k&f=t 消息类是 public class Message{ String a; String b; String c; String d; String e; String f; public Message(String a, String b, String c, String
消息
类
喂,我在请求,我得到
?a=x&b=y&c=z&d=w&e=k&f=t
消息类是
public class Message{
String a;
String b;
String c;
String d;
String e;
String f;
public Message(String a, String b, String c, String d, String e, String f){
this.a=a;this.b=b;this.c=c;this.d=d;this.e=e;this.f=f;
}
....// along with getters and setters
}
一个选项是在方法控制器中使用@RequestParam
,但是我必须传递所有参数,然后手动实例化消息
对象。我不想这样做,因为参数计数太大
这可以使用init binder/web数据绑定器完成吗?如何呢?我认为您只需要将消息对象作为控制器处理程序方法的参数传递,绑定就会自动进行。您的请求参数字符串需要如下所示:
?a=x&b=y&c=z&d=w&e=&f=
,因为如果您有?param=a¶m=b¶m=c
,那么您的消息对象需要是:
class Message {
List<String> param; // ends up holding strings "a","b","c",...
}
类消息{
List param;//最后保存字符串“a”、“b”、“c”,。。。
}
这不是您想要的(据我所知)。您不需要做任何特殊的事情来实现这一点,只需向控制器方法声明一个
消息
参数:
@RequestMapping
public String handleRequest(Message message) {
...
}
Spring将每个参数绑定到
消息
上的一个属性,在那里可以找到一个。如果Message
具有getter和setter(以及默认构造函数),它将正常工作。如果你想使用非默认构造函数或直接字段注入,你必须做更多的配置工作。你可以不用做任何特殊的工作,只要列出你需要的对象,Spring就会将你的请求参数清晰地绑定到你的类实例。我不明白。。。您希望在消息
类的字段中找到哪些值?查询字符串示例中没有实际内容(例如,a
字段中实际生成的param=a
是什么?)对不起,我已更正了消息示例。我想将传入的请求参数绑定到消息objectHi Kevin,很抱歉,我已更正了请求参数。是的,这就是我打算做的。如果在Message类中有一个自定义字段,如private JobType c,该怎么办;这种映射是如何发生的?嗨,Skaffman,谢谢你,如果在请求中呢?a=x&b=y&c=z&d=w&e=k&f=t参数b需要映射到自定义类JobType而不是String,假设类消息类似于此消息{String a;JobType b;String c;…等等}user354161:然后在Message.setB(String b)
中进行转换。。。简单的方法。请你提供一个例子,这样对未来的用户会更有帮助。