0

我试图通过使用对象工厂方法存储值来捕获每个循环的嵌套之外的所有关联元素。

元素的链接如下图所示。 在此处输入图像描述

我想要如下所示的输出

预期输出:

[
{Third-Level-ID=EL-234, Second-Level-ID=EL-229, First-Level-ID=EL-213}, 
{Third-Level-ID=EL-235, Second-Level-ID=EL-229, First-Level-ID=EL-213}, 
{Third-Level-ID=EL-236, Second-Level-ID=EL-229, First-Level-ID=EL-213},
{Third-Level-ID=EL-233, Second-Level-ID=EL-230, First-Level-ID=EL-213}, 
{Third-Level-ID=EL-237, Second-Level-ID=EL-230, First-Level-ID=EL-213}, 
{Third-Level-ID=EL-238, Second-Level-ID=EL-230, First-Level-ID=EL-213},
{Third-Level-ID=EL-239, Second-Level-ID=EL-230, First-Level-ID=EL-213}, 
{Third-Level-ID=NO-VAL, Second-Level-ID=EL-231, First-Level-ID=EL-213}
]

但是,我通过使用下面的代码得到下面的输出。

电流输出

[
{Third-Level-ID=EL-234, Second-Level-ID=EL-229, First-Level-ID=EL-213}, 
{Third-Level-ID=EL-238, Second-Level-ID=EL-230, First-Level-ID=EL-213}, 
{Third-Level-ID=NO-VAL, Second-Level-ID=EL-231, First-Level-ID=EL-213}
]

我正在使用的代码如下所示。

#set($projectId = $page.getReference.projectId())
#set($project = $projectService.getProject($projectId))
#set($documentNames = "Specification-Dummy-First-Level Specification-Dummy-Second-Level Specification-Dummy-Third-Level ")
#set($customerReqs = $trackerService.queryWorkItems($project, "reqType.KEY:customerrequirement  AND document.title:($documentNames)", "document.title"))



    ##First Level Velocity Script Starts Here------------------------
    #set($first_level_crs_pobject = $customerReqs.get(2))
    #set($first_level_crs_id = $first_level_crs_pobject.getId())
    #set($first_level_element_title = $first_level_crs_pobject.getTitle())
    #set($first_link =$first_level_crs_pobject.getLinkedWorkItemsStructsBack())
    
    #set($emptyArray = [])
        ##Second Level  Velocity Script Starts Here------------------------
        #set($second_level_array_size = $first_link.size())
                
            #foreach($sl in $first_link) ##Second-Level For-Each Starts Here------------------------
                
                #set($new_object_first = $objectFactory.newMap())

                #set($second_level_first_elem_pobject = $sl.getLinkedItem())
                #set($second_level_first_elem_ID = $second_level_first_elem_pobject.getId())
                #set($second_level_first_elem_title = $second_level_first_elem_pobject.getTitle())
                #set($second_link = $second_level_first_elem_pobject.getLinkedWorkItemsStructsBack())   
                
                #set($dummy = $new_object_first.put("Second-Level-ID",$second_level_first_elem_ID))
                #set($dummy = $new_object_first.put("First-Level-ID",$first_level_crs_id))
                
                #set($third_level_array_size = $second_link.size())
                
                #if($third_level_array_size == 0)
                    #set($dummy = $new_object_first.put("Third-Level-ID","NO-VAL") )
                #else
                     #foreach($tl in $second_link )
                        #set($third_level_first_elem_pobject = $tl.getLinkedItem())
                        #set($third_level_first_elem_id = $third_level_first_elem_pobject.getId())
                        #set($third_level_first_elem_title = $third_level_first_elem_pobject.getTitle())
                        
                        #set($dummy = $new_object_first.put("Third-Level-ID",$third_level_first_elem_id))
                        
                        #set($third_link = $third_level_first_elem_pobject.getLinkedWorkItemsStructsBack())
                        
                        #set($fourth_level_array_size = $third_link.size())                      
                     #end ##foreach($tl in $second_link ) ends here
                #end ##if($third_level_array_size == 0)      
                #set( $void = $emptyArray.add($new_object_first))
            #end##foreach($sl in $first_link)  Second-Level For Each Ends Here
        <table border = 1>
                <tr><td>Final Array of Object </td><td>$emptyArray</td></tr>
        </table>

你能帮忙吗?

4

1 回答 1

0

您在每个 2 级循环中覆盖 $new_object_first 的内容,因此只添加每个 2 级循环的最后一次迭代。您需要在设置“Third-Level-ID”后直接添加到 $emptyArray,然后使用第一级和第二级值重新初始化整个 $new_object_first。

于 2021-09-06T18:10:56.000 回答