问题描述
在父级JAVA模型中,由于有多个项目,因此我会像这样在循环中生成UUID:
@postconstruct
protected void init() {
list = IntStream.range(0,items)
.Boxed()
.map(idx -> "item" + idx)
.collect(Collectors.toList());
this.id = UUID.randomUUID().toString();
}
在子模型中,我想为每次迭代继承此ID。我使用了以下资源调整:
Resource parentResource = resource.getParent();
ParentClass parentClass = parentResource.adaptTo(parentClass.class);
parentId = parentClass.getId();
问题是,孩子继承了下一个生成的UUID!如何在父级和子级之间保留一个UUID,然后在下一次迭代中更改?
解决方法
这是预期的行为,因为您在子进程中调用 parentResource.adaptTo
方法,这将再次触发父进程的 @PostConstruct
方法。
您可以做的是将 UUID 持久化/保存为 CRX/de 数据库中特定资源的属性。
您可以考虑的另一种方法是通过请求将数据从父模型发送到子模型,即 request.setAttribute(...)