Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc 如何在Spring3.0中绑定请求参数?_Spring Mvc - Fatal编程技术网

Spring mvc 如何在Spring3.0中绑定请求参数?

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

我正在构建一个控制器,它接受来自第三方服务的请求。此服务有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 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)
中进行转换。。。简单的方法。请你提供一个例子,这样对未来的用户会更有帮助。