根据http://www.playframework.com/documentation/2.1.1/JavaForms页面 “从2.0.2开始,validate-method可以返回以下类型:String,List或Map>”
但似乎并非如此。
1)返回String时工作正常
2和3)列表和地图>将无法正常工作
以下提供的日志
[2013-06-18 17:59:00.108] DEBUG play-akka.actor.default-dispatcher-7 logging:make:28 - Logging Provider:org.jboss.logging.Log4jLoggerProvider
[2013-06-18 17:59:00.110] INFO play-akka.actor.default-dispatcher-7 Version :: 27 - HV000001:Hibernate Validator 4.3.0.Final
[2013-06-18 17:59:00.119] DEBUG play-akka.actor.default-dispatcher-7 DefaultTraversableResolver:detectJPA:106 - 在包含'getPersistenceUtil'的类路径上找到javax.persistence.Persistence。假设JPA 2环境。尝试实例化JPA感知的TraversableResolver
[2013-06-18 17:59:00.120] DEBUG play-akka.actor.default-dispatcher-7 DefaultTraversableResolver:detectJPA:117 - 类型为org.hibernate.validator.internal.engine.resolver的实例化JPA感知TraversableResolver .JPATraversableResolver。
[2013-06-18 17:59:00.122] DEBUG play-akka.actor.default-dispatcher-7 ValidationXmlParser:getValidationConfig:184 - 尝试为基于XML的Validator配置加载META-INF / validation.xml。
[2013-06-18 17:59:00.126] DEBUG play-akka.actor.default-dispatcher-7 ValidationXmlParser:getValidationConfig:187 - 未找到META-INF / validation.xml。仅使用基于注释的配置。
[2013-06-18 17:59:00.302] DEBUG play-akka.actor.default-dispatcher-7 PlatformResourceBundleLocator:getResourceBundle:72 - 找不到ValidationMessages。
[2013-06-18 17:59:00.304] DEBUG play-akka.actor.default-dispatcher-7 PlatformResourceBundleLocator:getResourceBundle:69 - org.hibernate.validator.ValidationMessages found。
应该承认,根据日志格式,它不是由play.Logger创建的,而是另一个。
任何人都可以提供返回List或Map>的validate()方法的代码片段。以及一些关于它的其他信息。
public Map<String, List<ValidationError>> validate() {
Map<String,List<ValidationError>> errors = new HashMap<>();
if (User.find.where().eq("login", login).findRowCount() > 0) {
List<ValidationError> errorList = new ArrayList<>();
errorList.add(new ValidationError("login", Messages.get("user.registration.notUniqueLogin", login), null));
errors.put("login", errorList);
}
if (User.find.where().eq("email", email).findRowCount() > 0) {
List<ValidationError> errorList = new ArrayList<>();
errorList.add(new ValidationError("email", Messages.get("user.registration.notUniqueEmail", email), null));
errors.put("email", errorList);
}
return errors;
}
答案 0 :(得分:0)
这是Map
的验证方法:
public Map<String, List<ValidationError>> validate()
{
Map<String, List<ValidationError>> errors = new HashMap<String, List<ValidationError>>();
// do validation
return errors;
}
地图条目键是表单字段的名称,值是与该字段关联的所有错误的List
。如果你想添加一个全局错误,那么我认为你传入一个空字符串""
作为密钥。
ValidationError
有三个参数。第一个是密钥,第二个是错误消息,第三个是List
Object
的消息参数。