我有一个HTTP表单,它返回以下HttpRequest请求主体,如下所示
propertyName0=name0&propertyValue0=value0&propertyDescription0=description0&
propertyName1=name1&propertyValue1=value1&propertyDescription1=description1&propertyName2=name2&propertyValue2=value2&propertyDescription1=description2
我有一个具有以下属性的模型
public class Property {
private String propertyName;
private String propertyValue;
private String propertyDescription;
// Getters and setters
}
我希望能够将请求体变量转换为Property对象列表。有没有办法做到这一点?
我的控制器代码(建议)
@RequestMapping(value="update", method=RequestMethod.POST)
@ResponseStatus(HttpStatus.OK)
public void update(List<Property> properties) {
// Do something with properties.
}
@RequestMapping(value="/fetch/}", method=RequestMethod.GET)
@ResponseBody
public String searchConfigProperties() throws Exception {
List<Property> properties = // Some code that generates a list. model.
Gson gson = new Gson();
return gson.toJson(properties);
}
UPDATE 控制器代表服务架构后端代码,不一定要绑定到任何视图。
答案 0 :(得分:0)
恕我直言,如果您有以下情况,Spring会自动执行:
props[0].propertyName=name0&props[0].propertyValue=value0&props[0].propertyDescription=description0&
props[1].propertyName=name1&props[1].propertyValue=value1&props[1].propertyDescription=description1&props[2].propertyName=name2&props[2].propertyValue=value2&props[1].propertyDescription=description2
如果您可以修改表单以获取此类字符串,则一切正常。
答案 1 :(得分:0)
您可以在类路径中使用Jackson有jackson-mapper-asl和jackson-core-asl,并使用@ResponseBody
如下
@RequestMapping(value="fetch", method=RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public List<Property> searchConfigProperties() {
// Do something with properties.
return properties;
}
<强>更新强>
以下是依赖项
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.2</version>
</dependency>
答案 2 :(得分:-1)
尝试使用Jackson API
@RequestMapping(value="update", method=RequestMethod.POST)
@ResponseStatus(HttpStatus.OK)
public void update(@RequestBody List<Property> properties) {
// Do something with properties.
}