在SpringMVC3中,如何在数据绑定之后、验证之前设置值?

在SpringMVC3中,如何在数据绑定之后、验证之前设置值?,spring,data-binding,spring-mvc,Spring,Data Binding,Spring Mvc,我需要在我的一个域对象上设置一个“时间提交”字段。验证规则要求该属性存在,但我不能通过表单中的数据绑定设置它,因为这样用户就可以更改它。在进行验证之前,我如何设置绑定对象(或即将绑定的对象)的属性?我不知道是否正确理解了您的问题,但您有两个选项来操作数据:客户端使用Java脚本,服务器端使用customer Validator public class PersonValidator implements Validator { /** * This Validator val

我需要在我的一个域对象上设置一个“时间提交”字段。验证规则要求该属性存在,但我不能通过表单中的数据绑定设置它,因为这样用户就可以更改它。在进行验证之前,我如何设置绑定对象(或即将绑定的对象)的属性?

我不知道是否正确理解了您的问题,但您有两个选项来操作数据:客户端使用Java脚本,服务器端使用customer Validator

public class PersonValidator implements Validator {

    /**
    * This Validator validates just Person instances
    */
    public boolean supports(Class clazz) {
        return Person.class.equals(clazz);
    }

    public void validate(Object obj, Errors e) {
        Person p = (Person) obj;
        p.setanyValue(some value); //changing object value
        if (p.getAge() < 0) {
            e.rejectValue("age", "negativevalue");
        } else if (p.getAge() > 110) {
            e.rejectValue("age", "too.darn.old");
        }
    }
}
公共类PersonValidator实现验证器{
/**
*此验证器只验证个人实例
*/
公共布尔支持(类clazz){
返回人.class.equals(clazz);
}
公共无效验证(对象obj,错误e){
人员p=(人员)obj;
p、 setanyValue(某些值);//更改对象值
if(p.getAge()<0){
e、 拒绝价值(“年龄”、“负面价值”);
}else if(p.getAge()>110){
e、 拒绝价值(“年龄”、“太老了”);
}
}
}

希望能有所帮助。

我不知道我是否正确理解了您的问题,但您有两种方法可以操作数据:客户端使用Java脚本,服务器端使用客户验证程序

public class PersonValidator implements Validator {

    /**
    * This Validator validates just Person instances
    */
    public boolean supports(Class clazz) {
        return Person.class.equals(clazz);
    }

    public void validate(Object obj, Errors e) {
        Person p = (Person) obj;
        p.setanyValue(some value); //changing object value
        if (p.getAge() < 0) {
            e.rejectValue("age", "negativevalue");
        } else if (p.getAge() > 110) {
            e.rejectValue("age", "too.darn.old");
        }
    }
}
公共类PersonValidator实现验证器{
/**
*此验证器只验证个人实例
*/
公共布尔支持(类clazz){
返回人.class.equals(clazz);
}
公共无效验证(对象obj,错误e){
人员p=(人员)obj;
p、 setanyValue(某些值);//更改对象值
if(p.getAge()<0){
e、 拒绝价值(“年龄”、“负面价值”);
}else if(p.getAge()>110){
e、 拒绝价值(“年龄”、“太老了”);
}
}
}
希望能有帮助。

也许是什么 我相信绑定是从创建一个类的新实例开始的。假设这是真的,您可以添加一个
blah=newdate()。虽然这会在绑定之前发生,但我相信它满足了获取提交时间的核心要求,但不要让客户端编辑它

如果这是错误的,请检查
initializebean
接口(或相应的
init方法
bean属性)

看起来Spring3.0有更多的生命周期选项。请参阅第3.6.1.4节中的组合生命周期机制

更好的信息 您应该能够注册处理程序拦截器并在其中设置提交时间

查看Spring3.0参考资料中的15.4.1拦截请求-HandlerInterceptor接口部分(链接在上面)。

我相信绑定是从创建一个类的新实例开始的。假设这是真的,您可以添加一个
blah=newdate()。虽然这会在绑定之前发生,但我相信它满足了获取提交时间的核心要求,但不要让客户端编辑它

如果这是错误的,请检查
initializebean
接口(或相应的
init方法
bean属性)

看起来Spring3.0有更多的生命周期选项。请参阅第3.6.1.4节中的组合生命周期机制

更好的信息 您应该能够注册处理程序拦截器并在其中设置提交时间

查看Spring3.0参考资料中的15.4.1拦截请求-HandlerInterceptor接口部分(链接在上面)