2013-02-09 35 views
13

我想在表单中添加一些错误,但我的代码不能编译。
特别是,似乎官方玩2 api是不正确的。
我们可以看到,错误的(),如果我尝试如何在表单中手动添加错误2框架

ValidationError e = new ValidationError("name", "user already exist",new ArrayList()); 
filledForm.errors().add(e); 

我得到的方法添加不存在的错误返回validationError
的列表 http://www.playframework.com/documentation/api/2.0/java/play/data/Form.Field.html#errors()

反正。
我发现它是一个HashMap,但后续的代码不编译:

filledForm.errors().put("name","s"); 

如何添加错误?感谢

编辑:解决了感谢朱利安乐峰

ValidationError e = new ValidationError("name", "user already exist",new ArrayList()); 
ArrayList<ValidationError> errors = new ArrayList<ValidationError>(); 
errors.add(e); 
filledForm.errors().put("name",errors); 
return badRequest(loginForm.render(filledForm)); 
+2

您共享的API-doc的是字段,而不是形式。你应该尝试这样的:'myForm.field(myField).errors.put(“...”)' – 2013-02-09 19:54:54

回答

11

简短的方法是

filledForm.reject("name","user already exist");

return badRequest(loginForm.render(filledForm));

+0

只是FYI,'Form.reject'在Play java中工作:https://www.playframework.com/文档/ 2.3.8/api/java/play/data/Form.html#reject%28java.lang.String,%20java.lang.String%29 – null 2015-02-14 19:29:22

11

您可以使用withError:

filledForm.withError("name", "user already exist") 

您可以添加一个全球性的错误太:

filledForm.withGlobalError("eneric error") 

从来源: https://github.com/playframework/playframework/blob/3bebfa7c1226a438a687ec9a0a3e5c23e5aefa09/framework/src/play/src/main/scala/play/api/data/Form.scala#L252

+1

仅供参考,'Form.withError'在Play Scala中工作:https: //www.playframework.com/documentation/2.3.8/api/scala/index.html#play.api.data.Form – null 2015-02-14 19:30:16