当前位置: 首页 > 知识库问答 >
问题:

如何在spring云合同中指定一个可选的日期属性?

岳炎彬
2023-03-14

我正在尝试使用春云契约。我编写了一个JSON主体规范,我需要一个可选的Date属性。当我在groovy DSL中指定:

"processingDate": $(consumer(optional(anyDate())), producer(anyDate())),

它将失败:

Exception in thread "main" Assertion failed: 

assert testSide ==~ Pattern.compile(stubSide.optionalPattern())
       |        |           |       |        |
       |        false       |       |        (org.springframework.cloud.contract.spec.internal.ClientDslProperty(DslProperty(clientValue:(\d\d\d\d)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]), serverValue:2016-06-16)))?
       |                    |       (org.springframework.cloud.contract.spec.internal.ClientDslProperty(DslProperty(clientValue:(\d\d\d\d)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]), serverValue:2016-06-16)))?
       |                    (org.springframework.cloud.contract.spec.internal.ClientDslProperty(DslProperty(clientValue:(\d\d\d\d)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]), serverValue:2016-06-16)))?
       org.springframework.cloud.contract.spec.internal.ClientDslProperty(DslProperty(clientValue:(\d\d\d\d)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]), serverValue:2011-01-11))

但是,当将可选和regex一起使用时,它仍然有效:

"processingDate": $(consumer(optional(regex(isoDate()))), producer(LocalDateTime.now().format(DateTimeFormatter.ISO_DATE))),

谢谢你!

共有1个答案

裴成文
2023-03-14

似乎在consumer端添加regex前缀就可以了。试着改变

“processingdate”:$(consumer(optional(anyDate())),producer(anyDate())),

“processingdate”:$(使用者(可选(regex(anyDate())))、生产者(anyDate())),

“processingdate”:$(消费者(可选(regex(isoDate())))、生产者('2016-06-16')),

有关详细信息,请签出spring-cloud-contract_optional_parameters

 类似资料:
  • 问题内容: 如果我在两个文本框中有两个日期20-4-2010和22-4-2010,并且我希望日期像这样的20、21、22,我该如何得到? 问题答案: 我很确定这已经回答了四千万次,但是无论如何: 该部分是为了防止代码跳过或者一天重复由于夏令时。 通过给出天数: 使用PHP5.3

  • 问题内容: 我假设Java有一些内置的方法可以做到这一点。 给定日期,我如何确定该日期之前一天? 例如,假设给我3/1/2009。上一个日期是2009年2月28日。如果给我3/1/2008,那么以前的日期应该是2/29/2008。 问题答案: 使用日历界面。 以这种方式进行“加法”可确保您获得有效的日期。该日期也于一年的1月1日有效,例如2012年1月1日为2011年12月31日。

  • 问题内容: 做这样的事情的语法是什么: 基本上,我想选择具有属性和属性的元素: 元件如以下应该 没有 被选择: 问题答案: 简单会很好。它实际上在标准文档中有很好的描述: 可以使用多个属性选择器来引用元素的多个属性,甚至可以多次引用同一属性。 在此,选择器匹配所有SPAN元素,这些元素的“ hello”属性的值恰好为“ Cleveland”,而其“再见”属性的值恰好为“ Columbus”: 附带

  • 项目的属性文件 项目的配置类 然而,我正在尝试使用条件配置创建一个SpringBoot starter项目,并希望将属性名称标准化为一些有用的东西,如“com.mycompany.propertygroup.propertyName”,但是为了简化转换并鼓励采用,我还希望在一段时间内支持旧的属性名称,因此我想知道是否有某种方法允许多个属性名称设置同一个字段?例如: 虽然提供的SpEL表达式答案在两

  • 问题内容: 如果我有特定的星期数(例如51)和给定的年份(例如2008),我如何找到同一周的第一个星期一的日期? 非常感谢 问题答案: 假设一周的第一天是星期一,请使用,而不是一周的第一天是星期日。有关详细信息,请参见strptime文档。 更新: 固定星期数。该指令基于0,因此第51周应输入为50,而不是51。

  • 问题内容: 如果我在Java(Android)中有两个日期(日期1和日期2),如何知道日期2是否在日期1的同一天内?(注意:如果Date2-Date1 <24小时则不是)。一些示例(支持相同的月份和年份) 谢谢 问题答案: 你为什么不使用? 您可以直接调用isSameDay之类的方法 检查Apache DateUtils。