SpringMVC参数绑定

1.参数绑定
   (1)日期类型 java.util.Date
    
   

 <form action="${pageContext.request.contextPath}/addUser">
       用户名 <input type="text" name="username" value="${user.username }">
         密码 <input type="text" name="password" value="${user.password }">
         年龄<input type="text" name="age" value="${user.age }">
       出生日期 <input type="text" name="birth" value="${user.birth }"> 
         <input type="submit" value="保存">
    </form>


 

   //pojo类
    public class UserInfo {
    private String username;
    private String password;
    private int age;
    private Date birth;  // java.util.Date
    //get set
    }


    
 

   @Controller
        public class MyControl {
            @RequestMapping("/addUser")
            public String addUser(UserInfo user){
                System.out.println(user);
                return "success";
            }
            
        }


    //400 原因参数中pojo有日期类型
     解决办法:
        (1)pojo类 格式化注解
        springmvcConfig.xml中开启mvc注解扫描驱动
        <mvc:annotation-driven>
        
        @DateTimeFormat(pattern="yyyy-MM-dd")
         private Date birth;
         
        (2)控制类中初始化绑定
        

@Controller
        public class MyControl {
            @InitBinder
            public void initband(WebDataBinder bind){
                SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
                df.setLenient(false);
                bind.registerCustomEditor(Date.class,new CustomDateEditor(df,true));
            }
            
            @RequestMapping("/addUser")
            public String addUser(UserInfo user){
                System.out.println(user);
                return "success";
            }
            
        }


        (3)采用处理器适配器中注入自定义的参数组件(略)
        
    (2)数组类型    
       批量处理更新、删除
           
          

//查询 
               @RequestMapping("/showUsers")
            public String showUsers(Model model){
                List<UserInfo> list=new ArrayList();
                list.add(new UserInfo(10,"tom","123",18,new Date()));
                list.add(new UserInfo(20,"kity","123",18,new Date()));
                list.add(new UserInfo(30,"mike","123",18,new Date()));
                model.addAttribute("userList", list);
                return "showUser";
            }
        //批量更新
            @RequestMapping("/updateAllUser")
            public String updateAllUser(CustomUsers custUser){
                for (UserInfo userInfo : custUser.getUsers()) {
                    System.out.println(userInfo);
                }
                return "success";
            }


        //showUser.jsp
                用户列表
        

  <form action="${pageContext.request.contextPath}/updateAllUser">
                <c:forEach items="${userList }" var="uu"  varStatus="ss">
                   编号 <input type="text" name="users[${ss.index}].id" value="${uu.id }">
                        用户名 <input type="text" name="users[${ss.index}].username" value="${uu.username }">
                         密码 <input type="text" name="users[${ss.index}].password" value="${uu.password }">
                       年龄<input type="text" name="users[${ss.index}].age" value="${uu.age }">
                        出生日期 <input type="date" name="users[${ss.index}].birth" value="${uu.birth }"> 
                      <br/>
                </c:forEach>
           <input type="submit" value="批量更新">
        </form>


        //自定义包装pojo
    

    public class CustomUsers {
            List<UserInfo>  users;
            public List<UserInfo> getUsers() {
                return users;
            }
            public void setUsers(List<UserInfo> users) {
                this.users = users;
            }
           
        }


    //批量删除
     

   @RequestMapping("/showUsers2")
            public String showUsers2(Model model){
                List<UserInfo> list=new ArrayList();
                list.add(new UserInfo(10,"tom","123",18,new Date()));
                list.add(new UserInfo(20,"kity","123",18,new Date()));
                list.add(new UserInfo(30,"mike","123",18,new Date()));
                model.addAttribute("userList", list);
                return "showUser2";
                
            }
        @RequestMapping("/delAllUser")
        public String delAllUser(Integer[] ids){ //int的包装类  ids 和checkbox name名一致
            for (Integer i : ids) {
                System.out.println(i);
            }
            return "success";
        }


    //showUser2
    <body>
        用户列表
        

  <form action="${pageContext.request.contextPath}/delAllUser" onsubmit="return ck()">
                <c:forEach items="${userList }" var="uu"  varStatus="ss">
                   编号 <input type="checkbox" name="ids" value="${uu.id }">
                        用户名 <input type="text"  value="${uu.username }">
                         密码 <input type="text"value="${uu.password }">
                       年龄<input type="text" value="${uu.age }">
                        出生日期 <input type="date"  value="${uu.birth }"> 
                      <br/>
                </c:forEach>
           <input type="submit" value="批量删除所选项" >
        </form>
            <script src="${pageContext.request.contextPath}/jquery-3.2.1.js"></script>
            <script>

               function ck(){
                   var f=false;
                   var objs=document.getElementsByName("ids");
                   var count=0;
                   for(var i=0;i<objs.length;i++){
                        if(objs[i].checked){
                            count++;
                        }
                   }
                  //console.log($("input:checked").length)
                  if(count!=0){
                      f=true;
                  }else{
                      alert("请选择")
                  }
                   return f;
               }
            </script>
        </body>
    


    静态文件:css images js  404资源找不到
    解决办法:在web.xml 中放行
        <servlet-mapping>
               <servlet-name>default</servlet-name>
               <url-pattern>*.js</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
                <servlet-name>default</servlet-name>
                <url-pattern>*.css</url-pattern>
        </servlet-mapping>

        <servlet-mapping>
                <servlet-name>default</servlet-name>
                <url-pattern>/images杠*</url-pattern>
        </servlet-mapping>

5.数据校验
    springmvc数据校验步骤
        pom.xml导入校验jar文件
        配置校验器
        校验器注入到处理器适配器中
        添加校验规则
        错误信息文件
        捕获错误信息
        显示错误信息
        
    <!-- spring校验 start -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>4.3.0.Final</version>
        </dependency>
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>1.0.0.GA</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.logging</groupId>
            <artifactId>jboss-logging</artifactId>
            <version>3.1.0.CR2</version>
        </dependency>
        <!-- spring校验 end -->
        
        
        
    

    public class UserInfo {
            private int id;
            @NotNull(message="用户名不能为null")
            @NotEmpty(message="{name.not.empty}")
            private String username;
            @Size(min=6,max=10,message="{pass.not.correct}")
            private String password;
            @Pattern(regexp="2\\d{1}" ,message="{age.not.inrange}")
            private int age;
        }


        
        
  

  @RequestMapping(value="/registerUser",method={RequestMethod.POST})
    public String registerUser(Model model,@Validated UserInfo user,BindingResult errormsg){
        //打印错误信息

        if(errormsg.hasErrors()){
            List<ObjectError> list =errormsg.getAllErrors(); //获取错误信息列表
            for (ObjectError err : list) {
                System.out.println(err.getDefaultMessage()); //获取错误信息的message值
            }
            model.addAttribute("errorList", list);
            return "register";
        }else{
            int res=userServiceImpl.register(user);
            if(res!=0){
                
                return "success";
            }else{
                return "failure";
            }
        }


            
        

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值