Tag: validation

如何使用SAX XML Schema Validator的validation消息进行内部化?

我正在使用此代码来针对XSDvalidationXML: SchemaFactory factory = SchemaFactory.newInstance(“http://www.w3.org/2001/XMLSchema”); Schema schema = factory.newSchema(xmlSchema); Validator validator = schema.newValidator(); Source source = new StreamSource(myXmlFile); try { validator.validate(source); return null; }catch (SAXException ex) { String validationMessage = ex.getMessage(); return validationMessage; } 但是当XML无效时,消息总是如下所示: cvc-minLength-valid: Value ‘-‘ with length = ‘1’ is not facet-valid with respect to minLength ‘2’ for type ‘#AnonType_xLgrTEndereco’. 有没有办法以我的语言返回用户友好的消息,而无需以编程方式翻译消息? 更新这是XSD中发生消息的字段的一段代码: […]

playframework为全局@Required字段设置自定义消息

我正在寻找帮助翻译Play框架2.2中的Validation messeges 我有需要的字段:fe @Required(message = “To pole jest wymagane”) public String miesiac; @Required public String miejsce; @Required public String oddzial; 但是我想在全球范围内传达这样一个信息:“极限开玩笑”。 我怎么能得到它? 我应该使用conf / messagess.pl文件进行翻译。 请给我一些帮助

如何在hibernate中保留实体期间validation实体上的约束

我有一个带字段名称的实体,我希望它不超过255,所以我这样定义: @Entity public class A implements Serializable { … @NotNull @Size(max=255) private String name; 我希望它在我调用a.persist()时得到validation,因此如果name太长则抛出exception。 我在validation.xml中定义了HibernateValidator: org.hibernate.validator.HibernateValidator org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator org.hibernate.validator.engine.resolver.DefaultTraversableResolver org.hibernate.validator.engine.ConstraintValidatorFactoryImpl 但它不起作用。 在持久化期间不会抛出exception,并且仅在提交期间,当刷新实体管理器时,我是否得到exception,即使这样,它也是数据库中的exception(因为它对大小为255的列也有限制)。 所以我相信我的validation根本不起作用。 如果你帮助我解决这两个问题,我会很高兴:1)如何在持久化期间进行validation而不是在刷新期间2)如何在validation失败时导致validation抛出exception?

用于实体解析的Catalog.xml文件的XMLSchemavalidation

我有一个schema.xsd ,它包含并修改xhtml,如下所示: … 现在我写了一个Validator,其中 从xml文件中读取模式 使用CatalogManager来解析实体 它工作正常,因为它不从网络加载任何文件,而是找到我的catalog.xml文件中给出的xhtml11.xsd。 public class XmlTemplateValidator implements TemplateValidator { public List validate ( String xml ) throws Exception { Reader input = new StringReader(xml); InputSource inputSource = new InputSource(input); SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setNamespaceAware(true); factory.setValidating(true); SAXParser parser = factory.newSAXParser(); parser.setProperty(“http://java.sun.com/xml/jaxp/properties/schemaLanguage”, “http://www.w3.org/2001/XMLSchema”); XMLReader reader = parser.getXMLReader(); reader.setEntityResolver(new CatalogResolver()); DefaultErrorHandler handler = new […]

实体持久注册validation侦听器

我正在使用JBoss 6和Seam,我有一个我试图坚持的实体, User 。 我已经扩展了org.jboss.seam.framework.EntityHome以提供UserHome类并重写了persist()方法。 我用javax.validation注释彻底注释了我的实体类。 当我为实体类中的所有字段提供有效值时,该对象将保持不变。 当我违反其中一个validation约束时,持久性会按预期失败。 我遇到的问题是在异步持久化期间违反约束:hibernate没有告诉我哪个约束被违反了! javax.validation.ConstraintViolationException: validation failed for classes [com.example.model.User] duringpersist time for groups [javax.validation.groups.Default, ] at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.validate(BeanValidationEventListener.java:132) at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.onPreInsert(BeanValidationEventListener.java:71) 如果我通过向UserHome.persist()添加EntityManager.flush()来强制同步持久性,那么我可以捕获包含违反约束的ConstraintViolationException和输出日志语句。 我的问题:是否可以使用hibernate / jboss注册一个监听器来进行约束违规? 我认为hibernate没有打印违规行为有点蹩脚,但希望我可以插入一些代码来捕获并记录它们以获取更多信息。 否则我不知道违反了什么约束。 谢谢!

为什么Java 7在成功安装JRE后无法validation – Java 7没有运行任何浏览器

这个问题困扰了我几天,直到我找到了几乎完整的答案,但我想先分享这个问题: 问题 我有一台支持IPv4和IPv6的Windows 7专业版64位笔记本电脑(后来很重要)我下载并安装了最新的Java 7 u 51 jre / browser插件,并且在最终重定向并说“失败”之前总会得到一个灰色的小程序框validation“是否安装了java。 我也是一名java开发人员,并且安装了一些JDK以及jres。 认为这是我的环境,我从我的系统中完成了一次jave的擦除(我运行了JavaRa并确保删除了所有内容http://singularlabs.com/software/javara/ ) 我为chrome插件安装了32位版本的JRE,并确保所有设置和安全信息都是正确的(根据有关此主题的许多post)。 清除所有缓存(浏览器和java)后,通过我的防火墙打孔(甚至禁用它以查看是否会解决它)以及以管理员身份运行,validationjava已安装并在我的所有浏览器中运行(在IE中失败) ,Chrome和FF) 所有这些都是针对如何解决Java 7无法在任何浏览器中运行的问题。 通过Java控制面板使用Java控制台启用完全跟踪和调试后,我终于从控制台中显示的堆栈跟踪中获得了一些不错的线索。 它无法从java或具有applet或jnlp web start文件的任何站点获取资源。

如何在Java中validation字符串?

如何在Java中validation字符串? 即只允许字符而不是数字? 电子邮件validation怎么样?

Spring环境中的多个@ConfigurationPropertiesvalidation器bean

使用@ConfigurationProperties批注将属性注入bean时,Spring提供了定义自定义validation器以validation这些属性的function。 ConfigurationPropertiesBindingPostProcessor使用固定的bean名称”configurationPropertiesValidator”和类org.springframework.validation.Validator查找此validation器。 现在假设我在模块A中有一个带有validation器的@ConfigurationProperties 。另一个模块B依赖于模块A.模块B还定义了自己的@ConfigurationProperties和它自己的validation器。 当应用程序加载时,后处理器只选择其中一个bean。 这会禁用validation的其他部分。 有针对这个的解决方法吗? 如何在我的应用程序中启用两个配置属性validation器?

Spring portlet mvc:@Valid似乎不起作用

我创建了一个bean类并在我的控制器中使用它,但它似乎不起作用。 即使我输入无效年龄, result.hasErrors仍然是假的。 Bean类: public class User{ @Min(13) private int age; private String name; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName(){ return name; } public void setName(String name){ this.name = name; } } 控制器片段: @ActionMapping(params = “myAction=validateUser”) public void validateUser(ActionRequest request, ActionResponse response, […]

对字节码和对象的澄清

我正在写一个字节码指导员。 现在,我试图找出在对象存在的情况下如何做到这一点。 我想对我在JVMS中阅读的两行(第4.9.4节)做一些澄清: 1)“validation者在初始化之前拒绝使用新对象的代码。” 我的问题是,“使用”在这里意味着什么? 我猜这意味着:将它作为方法属性传递,在其上调用GETFIELD和PUTFIELD ,或者调用它上面的任何实例方法。 他们的其他禁止用途? 我相信它可以遵循其他指令,如DUP , LOAD和STORE 。 2)“在该方法调用myClass的另一个实例初始化方法或其直接超类之前,该方法可以对此执行的唯一操作是分配在myClass中声明的字段。” 这意味着在方法中,在调用另一个之前允许GETFIELD和PUTFIELD。 但是,在Java中,在调用super()或this()之前对实例字段执行任何操作都会导致编译错误。 有人可以澄清一下吗? 3)我还有一个问题。 对象引用何时初始化,因此可以自由使用? 通过阅读JVMS,我想出了一个对象是否被初始化的答案,取决于每种方法。 在某个时间点,可以为方法初始化对象,但不能为另一个方法初始化对象。 具体来说,当该方法调用的返回时,对象的方法被初始化。 例如,考虑main()方法创建了一个对象并调用了 ,然后调用了超类的 。 从super()返回后,该对象现在被认为是由初始化的,但尚未为main()初始化。 这是否意味着,在super()之后的 ,我可以将对象作为参数传递给方法,甚至在返回到main()之前。 有人可以证实这整个分析是真的吗? 感谢您的时间。 ps:我实际上已经向Sun论坛发布了相同的问题,但回复。 我希望我能在这里有更多的运气。 谢谢。 更新 首先感谢您的答案和时间。 虽然我没有得到一个明确的答案(我有很多问题,其中一些有点模糊),但你的答案和例子,以及随后的实验,对于我更深入地了解JVM如何工作非常有用。 我发现的主要问题是Verifier的行为因不同的实现和版本而不同(这使得字节码操作的工作变得更加复杂)。 问题在于不符合JVMS,或者validation者的开发人员缺乏文档,或者JVMS在validation者的区域中有一些微妙的模糊性。 最后一件事,SO Rocks !!! 我在官方的Sun JVM规范论坛上发布了同样的问题,直到现在我仍然没有回答。