从父模型继承Java 8 UUID不匹配

问题描述

在父级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(...)