使用@ModelAttribute和表单标签库将表单提交的值绑定到类中

使用@ModelAttribute和表单标签库将表单提交的值直接绑定到类中

场景:使用spring框架时,在控制类方法中可以使用@ModelAttribute标记自定义类参数,spring会自动将表单提的值绑定到标记的类中同名属性中。

作用:用于转化表单数据类型,同时便于将表单值传递到类中,在复杂的提交中很有用。

下面例子将讲述怎么使用:
控制类:

@RequestMapping(value="/login")
public String login(@ModelAttribute("login") Login login) {
    return "loginform";
}

注:@ModelAttribute(“login”)中"login"可以不用写。

Login类:

public class Login {
private String userName;
private int password;

public void setUserName(String userName){
    this.userName=userName;
}
public void setPassword(String password2){
    //转String类型为int
    this.password=Integer.parseInt(password2);
}

注:login类必须有set方法,spring框架会调用这个方法为类属性赋值;方法名必须是set+属性名,不区分大小写;方法中形参类型必须是String(或一些固定类,不在本文所讲范围),因为表单提交的值都是以字符串类型提交的,形参名不一定要与属性名相同。

提交表单的视图jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    //form标签中modelAttribute属性值必须是Login类的类名,不区分大小写
    <form:form action="login" method="post"  modelAttribute="login" >
  //表单提交项中,path属性值必须是Login类中对应的属性名(不是set方法中的形参名),区分大小写
         用户名:<form:input path="userName"/>
         密码: <form:password path="password"/>
         <input id="submit" type="submit"  value="登陆">
     </form:form>
</body>
</html>

注:提交的表单必须使用form: 标签,要使用这个标签,需要在<html>上添加<%@ taglib prefix=“form” uri=“http://www.springframework.org/tags/form” %>;表单提交类型是post还是get不限。

还应注意的是,第一次执行@ModelAttribute Login login时就会创建一个Login类对象,之后加载视图jsp会自动将Login类中属性值加载到视图jsp的表单中(注:如果不先创建一个Login对象,加载表单时会报错),比如,在本实例中,加载视图jsp的控制方法就是第一个类中的唯一个方法,如果Login类写private String userName = “me”; 第一次加载表单,表单用户名一项就会显示me 初始值,当提交表单时实际上是更改之前创建的Login对象属性值,如果再次加载视图jsp,表单每项默认显示值会是更改后的Login对象属性值,利用这个,我们可以设置用户登录失败后,返回登录界面,之前输入的值不会消失(但form:password始终默认为空),我们经常见到的比较成熟的网站是不是都是这样的?

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值