Skip to content

Commit 0bb13df

Browse files
committed
pure parameter object°
1 parent 41d3f0e commit 0bb13df

File tree

3 files changed

+51
-1
lines changed

3 files changed

+51
-1
lines changed

note/spring-mvc.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1187,4 +1187,18 @@ HandlerMethodReturnValueHandler接口以及主要实现类如下:
11871187

11881188
从中也可以推测出我们可以把哪些类型的值(对象)直接"丢给"Spring。
11891189

1190-
对于HandlerMethodArgumentResolver和HandlerMethodReturnValueHandler来说,HttpMessageConverter像是两者手中用来实现功能的武器。
1190+
对于HandlerMethodArgumentResolver和HandlerMethodReturnValueHandler来说,HttpMessageConverter像是两者手中用来实现功能的武器。
1191+
1192+
## "纯"对象参数接收
1193+
1194+
假设有如下这样的Controller:
1195+
1196+
```java
1197+
@RequestMapping("/echoAgain")
1198+
public String echo(SimpleModel simpleModel, Model model) {
1199+
model.addAttribute("echo", "hello " + simpleModel.getName() + ", your age is " + simpleModel.getAge() + ".");
1200+
return "echo";
1201+
}
1202+
```
1203+
1204+
经过测试可以发现,SimpleModel参数既可以接收get请求,也可以接收post请求。那么在这种情况下请求参数是被哪个参数解析器解析的呢,debug发现: ServletModelAttributeMethodProcessor

src/main/java/controller/SimpleController.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package controller;
22

3+
import model.SimpleModel;
34
import org.springframework.stereotype.Controller;
45
import org.springframework.ui.Model;
56
import org.springframework.web.bind.annotation.RequestMapping;
@@ -18,4 +19,10 @@ public String echo(String name, Model model) {
1819
return "echo";
1920
}
2021

22+
@RequestMapping("/echoAgain")
23+
public String echo(SimpleModel simpleModel, Model model) {
24+
model.addAttribute("echo", "hello " + simpleModel.getName() + ", your age is " + simpleModel.getAge() + ".");
25+
return "echo";
26+
}
27+
2128
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package model;
2+
3+
/**
4+
* 简单的model.
5+
*
6+
* @author skywalker
7+
*/
8+
public class SimpleModel {
9+
10+
private String name;
11+
private Integer age;
12+
13+
public String getName() {
14+
return name;
15+
}
16+
17+
public void setName(String name) {
18+
this.name = name;
19+
}
20+
21+
public Integer getAge() {
22+
return age;
23+
}
24+
25+
public void setAge(Integer age) {
26+
this.age = age;
27+
}
28+
29+
}

0 commit comments

Comments
 (0)