Tag: validation

Spring MVC和JSR-303 hibernate条件validation

我有一个我要validation的表单。 它包含2个地址变量。 始终要validationaddress1,必须根据某些条件validationaddress2 public class MyForm { String name; @Valid Address address1; Address address2; } public class Address { @NotEmpty private String street; } 我的控制器自动validation并绑定我的表单obj @RequestMapping(…) public ModelAndView edit( @ModelAttribute(“form”) @Valid MyForm form, BindingResult bindingResult, …) if(someCondition) { VALIDATE form.address2 USING JSR 303 问题是,如果我使用LocalValidatorFactoryBeanvalidation器,我无法重用Spring提供的BinidingResult对象。 绑定不起作用,因为’result’的目标对象是’MyForm’而不是’Address’ validate(form.getAddress2(), bindingResult) //won’t work 我想知道什么是标准/清洁方法来进行条件validation。 我正在考虑以编程方式在我的控制器中创建一个新的BindingResult。 final BindingResult bindingResultAddress2 = […]

在多个类的spring MVC控制器中应用自定义validation器

我有一个使用自定义valiadtor的注册页面 public class CustomValidator implements Validator { private Validator validator; public CustomValidator(Validator validator) { this.validator = validator; } @SuppressWarnings(“rawtypes”) public boolean supports(Class clazz) { return Registration.class.equals(clazz); } public void validate(Object target, Errors errors) { validator.validate(target, errors); Registration myModel1 = (Registration) target; if (! myModel1.getConfirm_password().equals(myModel1.getPassword())) { errors.rejectValue(“confirm_password”, “confirm_password.confirm”); } } } 问题是我想将它应用于两个表单,所以我很困惑如何用两个类编写这个函数。 此function现在只有注册类。 如果我也想要其中的Person类怎么办? public boolean […]

Spring:如何解决validation错误 – >错误代码 – >错误消息

在Spring中,在validation之后,我们在controller获得了一个BindingResult对象。 很简单,如果我收到validation错误,我想重新显示我的表单,并在每个受影响的字段上方显示错误消息。 因此,为了检查我的FormObject字段username的字段错误,我调用: FieldError usernameFieldError = bindingResult.getFieldError(“username”); 好的,现在我持有一个FieldError对象,假设我使用DefaultMessageCodeResolver现在包含4个可能的错误代码。 如何从FieldError – >一个可供用户使用的字符串? 我在webapplication上下文中定义了MessageSource ,因此我可以将单个错误代码映射到消息。 但有时默认消息是最好的,有时我希望其中两个错误代码可能有相关的消息,所以我们需要选择最好的消息。 我使用什么方法来确定为字段错误提供的最佳错误消息? 我是否需要编写一些算法来检查所有错误代码并从最具体的方法中挑选? Spring是否为帮助确定最具体的错误消息提供了任何支持? 整个过程看起来如此漫长和令人费解,我认为spring应该让这些东西变得容易。 也许我不知何故完全偏离了基地?

想要validation印度车辆编号格式的正则表达式?

大家好,我… 我需要建立一个与车辆登记有关的挥杆应用程序,我想在其中输入印度标准的车辆号码,如: MP 09 AB 1234 AH 17 FT 2387 UT 32 DR 6423 DL 01 C AA 1111 进一步来说, 如果有人可以帮助我吗? DocumentFilter类型类也可以帮助我………

java.lang.NoClassDefFoundError:当我向控制器发送无效值时javax / el / PropertyNotFoundException

我使用MockMvc进行控制器测试 @Test public void updateEvent() throws Exception{ MockHttpServletRequestBuilder request = MockMvcRequestBuilders .post(“/updateEvent”); request.param(“selectedEventStatusId”, “1”); request.param(“selectedEventTypeId”, “1”); Event eventFromDb = createAndSaveEvent(); request.param(“idEvent”, eventFromDb.getId().toString()); request.param(“name”, eventFromDb.getName()); request.param(“description”, eventFromDb.getDescription() +”____”);//the reason of problem. if I will write request.param(“description”, eventFromDb.getDescription() ); its good work mapping if this field below request.param(“date”, new SimpleDateFormat(“yyyy-MM-dd”).format(eventFromDb.getDate())); request.param(“eventDate”, new SimpleDateFormat(“yyyy-MM-dd”).format(eventFromDb.getEventDate())); ResultActions result = mockMvc.perform(request).andDo(MockMvcResultHandlers.print()); […]

SpringMvc如何根据用户正在执行的函数为Object使用不同的validation器

我有一个名为“人员”的对象我希望根据用户想要执行的function执行不同类型的validation,例如,当正在注册/保存人员记录时,我想要检查其是否为NULL并生成一名官员数字以及更新记录时我不想执行此检查并执行更新语句。 但是,从那以后我就遇到了问题。 我看过不同的方法,它不够干净或灵活。 我尝试过以下方法,面临的问题是: 将注册validation器与Controller一起使用但每个Controller仅允许注册一个validation器。 这使得该validation的实现适用于控制器中执行的所有function。 使用Validator Facade可以为整个应用程序提供一个validation类,但是它会根据对象的实例类型选择validation,这会将每个对象的validation器数量限制为一个(需要更正)。 如何在不为该方法使用单独的Controller的情况下为同一对象执行不同的validation。 class主任 public class Officers implements Serializable{ private String userName; private String password; private String password2; private String fName; private String lName; private String oName; private int divisionNo; private officerNumber; OfficerRegistrationValidation类 @Component public class OfficerRegistrationValidation implements Validator { public boolean supports(Class clazz) { return Officers.class.equals(clazz); } public […]

使用JPA和Hibernate时@Size,@ Longth和@Column(length = value)之间的区别

以下三个字段的validation检查有什么区别? @Entity public class MyEntity { @Column(name = “MY_FIELD_1”, length=13) private String myField1; @Column(name = “MY_FIELD_2”) @Size(min = 13, max = 13) private String myField2; @Column(name = “MY_FIELD_3”) @Length(min = 13, max = 13) private String myField3; // getter & setter } 我读到第一个与DDL的东西有关。 第二个是beanvalidation。 第三个是用于hibernatevalidation。 那是对的吗? 我还不明白的是:我什么时候需要使用哪一个? 这些注释中的一个何时触发? 编辑:考虑以下情况:鉴于需要开发一个具有长度为13的字符串类型字段的实体。您会选择上述哪种方法? 甚至更好:你有哪些问题要问自己找出哪一个适合你的目的?

Java – 全名的正则表达式

如何validation正则表达式的全名? 我只想要字母表(没有数字),只需要正则表达式的空格。 这是我到目前为止所做的。 你能帮我修一下这个正则表达式吗? 非常感谢你 public static boolean isFullname(String str) { boolean isValid = false; String expression = “^[a-zA-Z][ ]*$”; //I know this one is wrong for sure >,< CharSequence inputStr = str; Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(inputStr); if (matcher.matches()) { isValid = true; } return isValid; }

基于spring的组动态POJOvalidation

考虑以下pojo以供参考: public class User{ private String username; private String firstName; private String middleName; private String lastName; private String phone; //getters and setters } 我的应用程序基本上是基于spring-boot的REST API,它暴露了两个端点,一个用于创建用户,另一个用于检索用户。 “用户”属于某些类别, group-a , group-b等,我从post请求的标题中获取。 我需要在运行时validation用户数据,validation可能会因用户组而异。 例如,属于组-a的用户可能将电话号码作为可选字段,而对于其他组可能是必填字段。 正则表达式也可能因组而异。 我需要能够配置spring,以某种方式动态validation我的pojo,一旦它们被创建,它们各自的validation集将根据它们的组触发。 也许我可以创建一个yml / xml配置,这将允许我启用它? 我宁愿不用@NotNull和@Pattern注释我的private String phone 。 我的配置如下: public class NotNullValidator implements Validator { private String group; private Object target; public String […]

如何在Java中有效地使用SAXParseException

我正在validationJava中的XMLSchema,并且当我有无效的内容模型时会抛出SAXParseExceptions。 我将使用这些exception来突出validation失败的位置 – 但SAXParseExceptions似乎有点过低。 例如,对于枚举失败,我得到的有效性错误是所提供的值与一个例外中的内容模型不匹配,以及它在下一个例子中应用的元素。 我想我需要一个实用程序,它抽象一点将相关的错误合并在一起,并将exception文本解析为可用的exception属性。 这是一种合理的方法,还是我只是缺少某些东西,或者是图书馆或助手class? 更新@timgilbert,感谢您的回复。 例如,我在t’internet上发现了一个SAXParseException cvc-pattern-valid: Value ‘en’ is not facet-valid with respect to pattern ‘([a-zA-Z]{1,8})(-[a-zA-Z0-9]{1,8})*’ 对我来说关键的事情是 此例外适用的元素’en’。 为什么我不能调用exception.getElement()或者其他东西,为什么不对有问题的元素进行XPath? 内存文档比行号和列号更有用! 这是模式validation失败。 为什么我不能得到类似可能类型的失败的枚举和对适当的失败的引用? validation失败的实际模式。 接下来会抛出另一个exception告诉我’en’元素的值导致我需要合并的问题 我希望能够做的一个例子就是让人们提交一份文件,并通过用户友好的消息突出显示validation失败的文件 – 上面的错误消息似乎不太友好……必须解析单引号只是感觉就像一场等待发生的事故:) 我想我可能做错了’reference-to-element’的事情,也许我应该默认将文档的身份转换作为validation的一部分,并使用我的validation错误属性来扩充转换可以用CSS挑选出来。 如果我需要解析消息以使它们更友好,那仍然无济于事…… Re:紧密绑定,javax.xml.validation.Validator.validate()抛出org.xml.sax.SAXException无论如何 – 不知道如何摆脱假设绑定… 干杯