Java 域对象验证与播放!框架

Java 域对象验证与播放!框架,java,validation,playframework,Java,Validation,Playframework,我想验证一个没有自动参数绑定的域对象,以限制客户端可以设置的属性 下面的类(来自的示例) 。。。通常是这样验证的 public static void hello(@Valid User user) { if(validation.hasErrors()) { params.flash(); validation.keep(); index(); } render(user); } 但是在这个场景中,user的所有字段都可以由客户端设

我想验证一个没有自动参数绑定的域对象,以限制客户端可以设置的属性

下面的类(来自的示例)

。。。通常是这样验证的

public static void hello(@Valid User user) {
   if(validation.hasErrors()) {
       params.flash();
       validation.keep();
       index();
   }
   render(user);
}
但是在这个场景中,
user
的所有字段都可以由客户端设置

是否可以通过Play触发域对象验证(而不是“控制器验证”)!1.2明确

public static void hello(long id, String name) {
   User user = User.findById(id);
   user.name = name;

   user.validate(); // <-- I miss something like this 

   if(validation.hasErrors()) {
       params.flash(); 
       validation.keep(); 
       index();
   }
   render(user);
}
publicstaticvoidhello(长id,字符串名){
User=User.findById(id);
user.name=名称;
user.validate();//您可以将@Required添加到name参数中,并将代码转换为:

public static void hello(long id, @Required String name) {
   if(validation.hasErrors()) {
       params.flash(); 
       validation.keep(); 
       index();
   } 
   User user = User.findById(id);
   user.name = name;
   render(user);
}
出于i18n的目的,您可以将注释扩展到@Required(message=“key.to.i18n.message”)。

您尝试过吗

validation.valid(user);

如果“验证”根本不在某个操作中,它没有实例化呢?不管怎样,找到它了:验证对象创建者受到保护,但有一个“.current()”。。。
validation.valid(user);