You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Hyperledger Composer中自定义参与者出生日期输入而非自动填充DateTime

解决Hyperledger Composer Test页面手动输入出生日期的问题

我之前也碰到过这个默认填充当前时间的坑,下面几个方法可以帮你解决这个问题,按需选就行:

1. 先修正模型文件的字段定义

首先检查你的CTO模型文件,确保出生日期字段没有设置默认值。如果之前的字段是这么写的:

participant Person identified by personId {
  o String personId
  o DateTime dob default=now()  // 这个default=now()就是自动填当前时间的原因
  // 其他字段...
}

default=now()删掉,改成:

participant Person identified by personId {
  o String personId
  o DateTime dob  // 移除默认值后,字段就变成可手动输入状态了
  // 其他字段...
}

改完后重新部署你的业务网络,模型层面就不会自动生成当前时间了。

2. 在Test页面手动输入符合格式的DateTime值

如果用的是Test页面的JSON编辑模式(点"Create New Participant"后选JSON输入),你可以直接手动写符合ISO 8601标准的日期时间字符串,比如:

{
  "$class": "org.example.Person",
  "personId": "P001",
  "dob": "1990-05-15T00:00:00Z"
}

格式要严格遵循YYYY-MM-DDTHH:mm:ssZ,其中T是日期和时间的分隔符,Z代表UTC时间。如果不需要具体时间,直接填日期加默认时间就行,比如上面示例的写法。

3. 加UI注解让表单显示可编辑日期控件

如果你习惯用Test页面的表单视图(不是JSON编辑),可以在CTO模型里加@UI注解,指定字段的输入类型为日期选择器,这样表单会显示可手动选择的日期控件,不会自动填当前时间:

participant Person identified by personId {
  o String personId
  o DateTime dob @UI(label="Date of Birth", type="date")
  // 其他字段...
}

加完注解重新部署业务网络,刷新Test页面,出生日期字段就会变成一个可点击选择的日期输入框,选完日期后系统会自动转换成符合要求的DateTime格式。

小提醒

  • 不管用哪种方式,输入的DateTime值必须符合ISO 8601格式,不然会触发数据验证错误。
  • 重新部署后记得清一下浏览器缓存或者刷新页面,确保新的模型定义生效。

内容的提问来源于stack exchange,提问作者PrashantNagawade

火山引擎 最新活动