springmvc 校验,新增,及在输入页面报错 command找不到bean的原因。

1.  在显示跳转的页面控制器中,传入modelAttribute的赋值,并在显示的jsp页面,用modelAttribute的属性将他显示出来。

如控制器代码:

@RequestMapping("/adminList")
    public String adminList(Admin admin) {
        return "adminList";
    }

这段代码主要负责转向,需要带上参数,admin。

然后jsp页面,有如下显示:

<form:form action="adminAdd" method="post" modelAttribute="admin"  >
 user:<form:input path="name" /><form:errors path="name" /><br>
 password:<form:input path="password" /><form:errors path="password"/><br>
 email:<form:input path="email" /><form:errors path="email"/><br>
 lock:<form:input path="lockFlag" /><br>
 <input type="submit">
</form:form>

具体的校验过程,需要在添加方法中,实现校验:

@RequestMapping("/adminAdd")
    public String adminAdd(@Valid Admin admin ,BindingResult error) {
        if(error.getErrorCount()>0)
        {
            System.out.println("出错了!");
            
            for(FieldError err:error.getFieldErrors()){
                System.out.println(err.getField() + ":" + err.getDefaultMessage());
            }
            
         return "adminList";
        }
        adminService.addAdminService(admin);
        return "addSuccess";
    }

校验的元数据,在bean中,用注解的方式标注

在hibernate-validator的jar 6.0.18中,在引入jar时提示hibernate的命名空间的那个已经过期,可以用spring提供的,试验结果,新的spring的可以跑通。

package cn.taotao.bean;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotEmpty;

public class Admin {

    private int id;
    @NotEmpty
    private String name;
    @NotEmpty
    private String password;
    @Email
    private String email;

 

其中最关键的一点,就是在转向时,带入bean的参数。

另外如果对于修改的操作,需要注入@ModelAttribute的方法,他会提前执行并且给表单域赋值。(待测)

    @ModelAttribute
    public void getAdmin(@RequestParam(value="id",required=false) Integer id,
            Map<String, Object> map){
        if(id != null){
            map.put("admin", adminService.getAdminByIdService(id));
        }
    }

 

posted @ 2019-12-03 17:07  琴声清幽  阅读(316)  评论(0编辑  收藏  举报