spring mvc-POJO传参方式

本文详细介绍了在Spring MVC框架下,如何使用级联属性和数组属性进行POJO对象的数据绑定,包括地址信息的级联注入和多选爱好的数组属性处理,展示了具体的Java代码实现及JSP页面元素。

https://www.cnblogs.com/caoyc/p/5635640.html

 

有两POJO类:

Address.java:

package com.proc;

public class Address {
    
    private String province;
    private String city;
    public String getProvince() {
        return province;
    }
    public void setProvince(String province) {
        this.province = province;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    @Override
    public String toString() {
        return "Address [province=" + province + ", city=" + city + "]";
    }
}

 

User.java:

package com.proc;

public class User {
    
    private String username;
    private String password;
    private String gender;
    private String hobby;
    private Address address;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public String getHobby() {
        return hobby;
    }
    public void setHobby(String hobby) {
        this.hobby = hobby;
    }
    public Address getAddress() {
        return address;
    }
    public void setAddress(Address address) {
        this.address = address;
    }
    @Override
    public String toString() {
        return "User [username=" + username + ", password=" + password
                + ", gender=" + gender + ", hobby=" + hobby + ", address="
                + address + "]";
    }
}

 

jsp页面:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

  </head>
  
  <body>
    <form action="testPOJO" method="post">
    <table>
        <tr>
            <td>用户名:</td><td><input type="text" name="username"/></td>
        </tr>
        <tr>
            <td>密码:</td><td><input type="password" name="password"/></td>
        </tr>
        <tr>
            <td>性别:</td>
            <td>
                <input type="radio" checked="checked" name="gender" value="male"/>男   
                   <input type="radio" name="gender" value="female"/>女
               </td>
        </tr>
        <tr>
            <td>爱好:</td>
            <td>
                <input type="checkbox" name="hobby" value="tv">看电视
                <input type="checkbox" name="hobby" value="ball">打球
                <input type="checkbox" name="hobby" value="swimming">游泳
            </td>
        </tr>
        <tr>
            <td>省:</td><td><input type="text" name="address.province"/></td>
        </tr>
        <tr>
            <td>市:</td><td><input type="text" name="address.city"/></td>
        </tr>
        <tr>
            <td></td><td><input type="submit" value="提交"></td>
        </tr>

       </table>
    
    </form>
  </body>
</html>

 

控制器类:

package com.proc;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class Test {

    @RequestMapping("/testPOJO")
    public String testPOJO(User user){
        System.out.println(user);
        return "hello";
    }
    
}

 

测试:

1、进入jsp页面:

2、点击提交后,控制台输出:

User [username=caoyc, password=123456, gender=male, hobby=tv,swimming, address=Address [province=sichuan, city=chengdu]]

 

总结:

这里对应address属性使用的是级联属性。

 

POJO注入数组属性:

上面我们看到hobby是一个多选项。那么可以将hobby设为一个String[]类型的数组。设置后再次:

@RequestMapping("/testPOJO")
public String testPOJO(User user){
    System.out.println(user);
    System.out.println(Arrays.toString(user.getHobby()));
    return "hello";
}

输出结果:

User [username=caoyc, password=123456, gender=male, hobby=[Ljava.lang.String;@c3d34, address=Address [province=sichuan, city=chengdu]][tv, swimming]

上面如果输入中文,会出现乱码情况。

转载于:https://www.cnblogs.com/arrows/p/10523837.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值