springmvc 关于form表单中modelAttribute绑定实体时 整型初始化 问题

本文介绍了一个使用Java实现的用户注册表单验证案例,包括如何在User类中设置各种字段验证规则,如登录名、密码、用户名、邮箱、年龄、生日和电话号码的合法性检查。同时,文章还提供了在JSP页面上展示错误信息的方法,并分享了两种解决页面初始年龄值显示为0的问题的方案:一是将int类型改为Integer,二是通过JavaScript在页面加载时进行处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码如下:
User类:

public class User implements Serializable{
    private static final long serialVersionUID = 1L;
    @NotBlank(message="登录名不能为空")
    private String loginname;
    @NotBlank(message="密码不能为空")
    @Length(min=6,max=8,message="密码长度必须在6到8位之间")
    private String password;
    @NotBlank(message="用户名不能为空")
    private String username;
     @Email(message="邮箱必须合法")
    private String email;
    @Range(min=16,max=68,message="年龄必须在16到68之间")
    private int age;                      //主要是此处
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @Past(message="生日必须是一个过去的日期")
    private Date birthday;
    @Pattern(regexp="[1][3,8][3,6,9][0-9]{8}",message="无效的电话号码")
    private String phone;
    //get/set方法

jsp页面:

<h3>注册页面</h3>
<form:form modelAttribute="user" method="post" action="login" >
    <table>
        <tr>
            <td>登录名:</td>
            <td><form:input path="loginname"/></td>
            <td><form:errors path="loginname" cssStyle= "color:red"/></td>
        </tr>
        <tr>
            <td>密码:</td>
            <td><form:input path="password"/></td>
            <td><form:errors path="password" cssStyle= "color:red"/></td>
        </tr>
        <tr>
            <td>用户名:</td>
            <td><form:input path="username"/></td>
            <td><form:errors path="username" cssStyle= "color:red"/></td>
        </tr>
        <tr>
            <td>年龄:</td>
            <td><form:input path="age"/></td>
            <td><form:errors path="age" cssStyle= "color:red"/></td>
        </tr>
        <tr>
            <td>邮箱:</td>
            <td><form:input path="email"/></td>
            <td><form:errors path="email" cssStyle= "color:red"/></td>
        </tr>
        <tr>
            <td>生日:</td>
            <td><form:input path="birthday"/></td>
            <td><form:errors path="birthday" cssStyle= "color:red"/></td>
        </tr>
        <tr>
            <td>电话:</td>
            <td><form:input path="phone"/></td>
            <td><form:errors path="phone" cssStyle= "color:red"/></td>
        </tr>
        <tr>
            <td><input type="submit" value="提交"/></td>
        </tr>
    </table>
</form:form>

页面展示效果:
这里写图片描述


出现原因和解决办法:
这是Java基本语法决定的,好好理解一下Integer和int的区别,另外还可以在页面初始化后进行处理,所以有两个解决方法:
一、将int改为Integer,这样初始值为null,在页面上显示就是空值
二、在页面上用JavaScript处理

Html代码:

<body onload="if(document.getElementById('age').value=='0')document.getElementById('age').value='';">  
.....  
</body>

Javascript代码:

$(function(){  
if($('#age').val()=='0'){  
  $('#age').val('');  
}  
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值