当前位置: 首页 > news >正文

网站开发的就业方向邯郸做外卖网站的公司

网站开发的就业方向,邯郸做外卖网站的公司,网页设计站,湖北省建设厅行政审批网站jsr303自定义验证借助JSR 310#xff0c;Java 8终于为我们带来了不错的日期和时间API。 对于仍在使用Java 7的那些人#xff08;就像我目前在我的当前项目中一样#xff09;#xff0c;有很好的反向移植#xff0c;请访问www.threeten.org了解更多详细信息。 但是#xf… jsr303自定义验证 借助JSR 310Java 8终于为我们带来了不错的日期和时间API。 对于仍在使用Java 7的那些人就像我目前在我的当前项目中一样有很好的反向移植请访问www.threeten.org了解更多详细信息。 但是由于有关该主题的博客已经很多因此我将不涉及使用新API的任何细节。 我将在本文中向您展示的是如何通过编写自己的自定义批注将Date / Time API与JSR 303 Bean验证API结合使用。 如果您同时使用bean验证和新的日期/时间API则可能需要结合使用它们。 API和Hibernate Validator之类的实现仅提供了少数约束例如NotEmpty或Pattern 。 但是到目前为止JSR 310还没有现成的约束。幸运的是创建自己的约束非常容易。 作为示例我将演示如何编写自己的Past批注以验证java.time.LocalDate字段。 为了进行测试我们将从一个非常简单的类开始该类包含一个日期和一个dateTime。 这些字段应该代表过去的日期。 因此它们使用Past注释进行注释 ClassWithPastDates package it.jdev.example.jsr310.validator;import java.time.LocalDate; import java.time.LocalDateTime;public class ClassWithPastDates {Pastprivate LocalDate date;Pastprivate LocalDateTime dateTime;public LocalDate getDate() {return date;}public void setDate(LocalDate date) {this.date date;}public LocalDateTime getDateTime() {return dateTime;}public void setDateTime(LocalDateTime dateTime) {this.dateTime dateTime;}} 接下来我们将为Past约束编写一个非常基本的单元测试以证明我们的意图显然除了过去的日期之外我们还希望null引用有效但将来的日期无效甚至今天也算作无效。 过去测试 package it.jdev.example.jsr310.validator;import static org.junit.Assert.assertEquals;import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Set;import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; import javax.validation.ValidatorFactory;import org.junit.Before; import org.junit.Test;public class PastTest {private ClassWithPastDates classUnderTest;Beforepublic void setup() {classUnderTest new ClassWithPastDates();}Testpublic void thatNullIsValid() {SetConstraintViolationClassWithPastDates violations validateClass(classUnderTest);assertEquals(violations.size(), 0);}Testpublic void thatYesterdayIsValid() throws Exception {classUnderTest.setDate(LocalDate.now().minusDays(1));classUnderTest.setDateTime(LocalDateTime.now().minusDays(1));SetConstraintViolationClassWithPastDates violations validateClass(classUnderTest);assertEquals(violations.size(), 0);}Testpublic void thatTodayIsInvalid() throws Exception {classUnderTest.setDate(LocalDate.now());classUnderTest.setDateTime(LocalDateTime.now());SetConstraintViolationClassWithPastDates violations validateClass(classUnderTest);assertEquals(violations.size(), 2);}Testpublic void thatTomorrowIsInvalid() throws Exception {classUnderTest.setDate(LocalDate.now().plusDays(1));classUnderTest.setDateTime(LocalDateTime.now().plusDays(1));SetConstraintViolationClassWithPastDates violations validateClass(classUnderTest);assertEquals(violations.size(), 2);}private SetConstraintViolationClassWithPastDates validateClass(ClassWithPastDates myClass) {ValidatorFactory factory Validation.buildDefaultValidatorFactory();Validator validator factory.getValidator();SetConstraintViolationClassWithPastDates violations validator.validate(myClass);return violations;}} 现在我们已经建立了基本测试我们可以实现约束本身。 这包括两个步骤。 首先我们必须编写注释然后必须实现ConstraintValidator 。 从注释开始 interface过去 package it.jdev.example.jsr310.validator;import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;import javax.validation.Constraint; import javax.validation.Payload;Target({ ElementType.FIELD }) Retention(RetentionPolicy.RUNTIME) Constraint(validatedBy PastValidator.class) Documented public interface Past {String message() default it.jdev.example.jsr310.validator.Past.message;Class?[] groups() default {};Class? extends Payload[] payload() default {};} 如您所见 Past注释不是很壮观。 需要注意的主要事情是Constraint批注在其中我们指定将使用哪个类来执行实际的验证。 PastValidator package it.jdev.example.jsr310.validator;import java.time.LocalDate; import java.time.temporal.Temporal;import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext;public class PastValidator implements ConstraintValidatorPast, Temporal {Overridepublic void initialize(Past constraintAnnotation) {}Overridepublic boolean isValid(Temporal value, ConstraintValidatorContext context) {if (value null) {return true;}LocalDate ld LocalDate.from(value);if (ld.isBefore(LocalDate.now())) {return true;}return false;}} PastValidator是所有魔术发生的地方。 通过实现ConstraintValidator接口我们不得不提供两种方法但对于我们的示例仅使用isValid方法这是我们执行实际验证的地方。 请注意我们使用java.time.temporal.Temporal作为类型因为它是LocalDate和LocalDateTime类共同的接口。 这使我们可以对LocalDate和LocalDateTime字段使用相同的Past 。 真正的全部就是它。 在这个非常基本的示例中我展示了创建自己的定制JSR 303 bean验证约束是多么容易。 翻译自: https://www.javacodegeeks.com/2014/09/custom-jsr-303-bean-validation-constraints-for-the-jsr-310-new-datetime-api.htmljsr303自定义验证
http://www.zqtcl.cn/news/833356/

相关文章:

  • 龙岗网站设计农业网站模板WordPress
  • 摄像头监控设备企业网站模板聊城网站设计公司
  • 做英文网站賺钱建筑设计资料网站
  • 上海专业网站建设平台百度sem认证
  • 个人房产查询系统网站官网推广普通话 奋进新征程
  • 网站设计理念介绍石家庄业之峰装饰公司怎么样
  • 博乐建设工程信息网站ppt软件下载免费版
  • 宿州公司网站建设企业管理培训课程讲座大全
  • 企业网站营销的优缺点Vs做的网站调试时如何适应网页
  • 策划案网站构成怎么写wordpress建个人博客
  • 自己做的网站别人怎么访问美容行业网站建设多少价格
  • 网站建设与运营 教材 崔海口个人建站模板
  • 做本地网站赚钱吗wordpress桌面宠物
  • 滁州市城市建设投资有限公司网站云服务器里面做网站播放器
  • 做yy头像的网站口碑营销案例简短
  • 卖灯杆的做网站好网页ip代理
  • 做网站开发工具哪个好网络协议分析课程设计报告
  • 如何进行营销型企业网站的优化网站开发有很多种吗
  • 卡片式设计网站营销培训课程视频
  • 网站rss地址生成wordpress 首页幻灯片
  • 网络营销软件专业网站优化方案
  • 展览公司网站建设方案深圳正规做网站的公司
  • 网站做关键词首页淮南网站建设报价
  • 西山区城市建设局网站网页浏览器的英文缩写
  • 个人网站怎么做内容比较好昆明网站制作企业
  • 婚嫁网站建设计划专业 网站建设
  • 成品免费ppt网站做网站玩玩
  • 怎么给网站做seo优化网站的主页按钮怎么做的
  • 蓬莱做网站公司wordpress 加微信号
  • 建设网站如何优化关键词鞍山网站制作招聘网