0

根据http://www.playframework.com/documentation/2.1.1/JavaForms页面“自 2.0.2 起,验证方法可以返回以下类型:字符串、列表或地图>”

但似乎并非如此。

1)返回String时工作正常</p>

2 和 3) 列表和地图> 不起作用

下面提供的日志

[2013-06-18 17:59:00.108] 调试 play-akka.actor.default-dispatcher-7 logging:make:28 - 日志提供程序:org.jboss.logging.Log4jLoggerProvider

[2013-06-18 17:59:00.110] 信息 play-akka.actor.default-dispatcher-7 版本::27 - HV000001: Hibernate Validator 4.3.0.Final

[2013-06-18 17:59:00.119] 调试 play-akka.actor.default-dispatcher-7 DefaultTraversableResolver:detectJPA:106 - 在包含“getPersistenceUtil”的类路径上找到 javax.persistence.Persistence。假设 JPA 2 环境。尝试实例化 JPA 感知 TraversableResolver

[2013-06-18 17:59:00.120] 调试 play-akka.actor.default-dispatcher-7 DefaultTraversableResolver:detectJPA:117 - 实例化 JPA 感知 TraversableResolver 类型为 org.hibernate.validator.internal.engine.resolver.JPATraversableResolver。

[2013-06-18 17:59:00.122] 调试 play-akka.actor.default-dispatcher-7 ValidationXmlParser:getValidationConfig:184 - 尝试为基于 XML 的验证器配置加载 META-INF/validation.xml。

[2013-06-18 17:59:00.126] 调试 play-akka.actor.default-dispatcher-7 ValidationXmlParser:getValidationConfig:187 - 未找到 META-INF/validation.xml。仅使用基于注释的配置。

[2013-06-18 17:59:00.302] 调试 play-akka.actor.default-dispatcher-7 PlatformResourceBundleLocator:getResourceBundle:72 - 找不到验证消息。

[2013-06-18 17:59:00.304] 调试 play-akka.actor.default-dispatcher-7 PlatformResourceBundleLocator:getResourceBundle:69 - 找到了 org.hibernate.validator.ValidationMessages。

应该承认,根据 lo 日志格式,它不是由 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;
    }
4

1 回答 1

0

这是 a 的验证方法Map

public Map<String, List<ValidationError>> validate()
{
  Map<String, List<ValidationError>> errors = new HashMap<String, List<ValidationError>>();
  // do validation
  return errors;
}

映射条目键是表单字段的名称,值是List与该字段关联的所有错误中的一个。如果你想添加一个全局错误,那么我认为你传入一个空字符串""作为键。

ValidationError接受三个参数。第一个再次是键,第二个是错误消息,第三个是消息参数作为 aListObjects。

于 2013-06-18T15:18:08.270 回答