springMVC傳物件引數
阿新 • • 發佈:2019-01-10
Use物件:
[java] view plain copy
springController:
[java] view plain copy- @Controller
- @RequestMapping("/user")
- public UserController extends BaseController{
- @RequestMapping
- public void testBinderOuput(@ModelAttribute User user, HttpServletRequest request, HttpServletResponse response){
- System.out.println(user);
- }
- }
Use物件:
[java] view plain copy
- public Class User{
- private String name;
- private int sex;
- private String address;
- private int id;
- public int getSex() {
- return sex;
- }
- public void setSex(int sex) {
- this.sex = sex;
- }
- public String getAddress() {
- return address;
- }
- public void setAddress(String address) {
- this.address = address;
- }
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
請求路徑:
localhost/user/addUser?user.name="test"
那麼在後臺接受到的引數中,user物件的name屬性是null。如果路徑換為localhost/user/addUser?name="test",則user物件的name屬性是test。
這裡必須用name="test"而不是user.name="test",因為預設情況下springMVC是不支援user.name這種傳參方式的。
如果有個物件manager中也有name這個相同的屬性,那麼可以採用user.name,manager.name來傳輸引數。但是這個需要在controller中新增一個字首繫結:
新增繫結字首後的controller類如下:
[java] view plain copy- @Controller
- @RequestMapping("/user")
- public UserController extends BaseController{
- @InitBinder("manager")
- public void initBinder1(WebDataBinder binder) {
- binder.setFieldDefaultPrefix("manager.");
- }
- @InitBinder("user")
- public void initBinder2(WebDataBinder binder) {
- binder.setFieldDefaultPrefix("user.");
- }
- @RequestMapping("/addUser")
- public void testBinderOuput(@ModelAttribute User user, HttpServletRequest request, HttpServletResponse response){
- System.out.println(user.getName);
- }
- @RequestMapping("/addManager")
- public void testBinderOuput(@ModelAttribute Manager manager, HttpServletRequest request, HttpServletResponse response){
- System.out.println(manager.getName);
- }
- }