Link under tree-node not working when transition has action tag in it

<transition name="goToEditOrg" >
    <actions>
        <log message="delete me... childRoleTypeId = ${childRoleTypeId}" level="error"/>
        <log message="delete me... childId = ${childId}" level="error"/>
        <if condition="childRoleTypeId == 'OrgDivision'"><set field="url" value="../../Division/EditOrg"/></if>
        <if condition="childRoleTypeId == 'OrgDepartment'"><set field="url" value="../../Department/EditOrg"/></if>
        <if condition="childRoleTypeId == 'OrgProject'"><set field="url" value="../../Project/EditOrg"/></if>
    </actions>
    <default-response url="${url}" parameter-map="[partyId:childId]"/>
</transition>
<link url="${currUrl}"
   text="${currName}"
   link-type="hidden-form"
   btn-type="danger"
   tooltip="${currUrl}"
   parameter-map="[
     childId:hRel.childId,
     childRoleTypeId: hRel.childRoleTypeId,
   ]"
   id="${treeNodeId == '#' ? '' : treeNodeId +'/'}${nodeList_entry.hierarchyRelationshipId}_1"/>

When i remove the action tag from the transition, the link works fine, but when i return it, the logs don’t show up and the default-response is not used. The page ends up refreshing.

Please note that the link is inside a tree ===> tree-node

Can anyone verify that this is a bug?

@Mohammad_Al_Hajj can you narrow down your example to as simple of an example as you can get?

Based on the information given, I’m not sure how the two pieces connect together much less what the actual problem is.

I would additionally like to point to the fact that i also can’t add 2 links to the same node next to each other like (this)

I understand that a small sample would be best, but since moqui has once and again caused me issues from seemingly innocent code, I will give you the full screen.

the code itself is very basic, and the screen is no more then a tree view with nothing fancy in it

please note that i have the links commented out since only the first link will show if i added them both at the same time

here is the full screen:

<?xml version="1.0" encoding="UTF-8"?>
<screen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://moqui.org/xsd/xml-screen-2.1.xsd"
        default-menu-include="false"
        default-menu-index="3">

    <parameter name="hTypeParam"/>

    <transition name="goToPosition"><default-response url="../FindPosition" parameter-map="[emplPositionId:id]"/></transition>
    <transition name="goToEditOrg" >
        <actions>
            <log message="delete me... childRoleTypeId = ${childRoleTypeId}" level="error"/>
            <log message="delete me... childId = ${childId}" level="error"/>
            <if condition="childRoleTypeId == 'OrgDivision'"><set field="url" value="../../Division/EditOrg"/></if>
            <if condition="childRoleTypeId == 'OrgDepartment'"><set field="url" value="../../Department/EditOrg"/></if>
            <if condition="childRoleTypeId == 'OrgProject'"><set field="url" value="../../Project/EditOrg"/></if>
        </actions>
        <default-response url="${url}" parameter-map="[partyId:childId]"/>
    </transition>
    <transition name="goToFindOrg"><default-response url="../FindOrg"/></transition>
    <transition name="goToEmployee"><default-response url="../EditEmployee" parameter-map="partyId:id"/></transition>

    <actions>
        <set field="hTypeParam" from="hTypeParam?:'HrtDefault'"/>

        <entity-find entity-name="moqui.basic.Enumeration" list="hierarchyTypeList">
            <econdition field-name="enumTypeId" value="HierarchyRelationshipType"/>
        </entity-find>
    </actions>

    <widgets>
        <container-row>
            <row-col xs="6" sm="6" md="6" lg="6">
                <label text="Organization Chart" style="text-bold text-lg margin-b-1"/>
            </row-col>
            <row-col xs="6" sm="6" md="6" lg="6" style="text-right">
                <button-menu text="Hierarchy Type" icon="far fa-ellipsis-v">
                    <section-iterate name="hTypeSection" list="hierarchyTypeList" entry="hType">
                        <widgets>
                            <link text="${hType.description}" url="." parameter-map="[hTypeParam:hType.enumId]"/>
                        </widgets>
                    </section-iterate>
                </button-menu>
                <button-menu text="Switch View" icon="far fa-ellipsis-v">
                    <link url="../OrganizationChart" text="Organization"/>
                    <link url="../EmployeePositionChart" text="Employee Positions"/>
                    <link url="../EmployeeChart" text="Employees"/>
                </button-menu>
            </row-col>
        </container-row>

        <tree name="OrganizationTree">
            <tree-node name="OrganizationNode">
                <actions>
                    <set field="hRel"/>
                    <set field="currName"/>
                    <set field="currUrl"/>
                    <set field="containedList"/>
                    <script><![CDATA[
                        import com.erp.hr.services.utils.hierarchy.HierarchyEV
                        import com.erp.nucleus.utils.PartyFunctions
                        import com.erp.nucleus.utils.functional_programming.Either3

                        hRel = new HierarchyEV(ec).setAll(nodeList_entry)
                        currName = hRel.getDescription().trim()

                        Either3<String, HierarchyEV.PartyEV, HierarchyEV.PositionEV> either = hRel.makeEither();

                        // set the display name according to the child role
                        currUrl = either.<String> either(
                                { error -> null },
                                { partyEV -> 'goToEditOrg' },
                                { posEV -> 'goToPosition' }
                        );

                        containedUrl = either.<String> either(
                                { error -> null },
                                { partyEV -> 'goToFindOrg' },
                                { posEV -> 'goToEmployee' }
                        );

                        containedList = hRel.getContained();
                        containedId = either.<String> either(
                                { error -> null },
                                { partyEV -> null },
                                { posEV -> !containedList.isEmpty() ? containedList.get(0).getString("fromPartyId") : null }
                        );

                        ]]></script>
                    <if condition="hRel.isContainer()">
                        <then>
                            <set field="containedName" from="com.erp.nucleus.utils.PartyFunctions.findPartyName(containedId) ?: 'vacant'"/>
                        </then>
                        <else>
                            <entity-find-one entity-name="mantle.party.RoleType" value-field="roleType">
                                <field-map field-name="roleTypeId" from="hRel.childRoleTypeId"/>
                            </entity-find-one>
                            <set field="containedName" from="roleType.description?: ''"/>
                        </else>
                    </if>
                </actions>
                <!--<link url="${currUrl}"-->
                <!--      text="${currName}"-->
                <!--      link-type="hidden-form"-->
                <!--      btn-type="danger"-->
                <!--      tooltip="${currUrl}"-->
                <!--      parameter-map="[-->
                <!--        childId:hRel.childId,-->
                <!--        childRoleTypeId: hRel.childRoleTypeId,-->
                <!--      ]"-->
                <!--      id="${treeNodeId == '#' ? '' : treeNodeId + '/'}${nodeList_entry.hierarchyRelationshipId}_1"/>-->

                <!--<link url="${containedUrl}"-->
                <!--      text="${containedName}"-->
                <!--      parameter-map="[partyId:hRel.childId]"-->
                <!--      id="${treeNodeId == '#' ? '' : treeNodeId + '/'}${nodeList_entry.hierarchyRelationshipId}_2">-->
                <!--</link>-->
                <label text="$currName ($containedName)"
                       id="${treeNodeId == '#' ? '' : treeNodeId + '/'}${nodeList_entry.hierarchyRelationshipId}"/>


                <tree-sub-node node-name="OrganizationNode" list="childList">
                    <actions>
                        <set field="parentId" from="treeNodeId.split('/').last()"/>
                        <entity-find entity-name="erp.hr.hierarchy.HierarchyRelationship" list="childList">
                            <econdition field-name="hierarchyTypeEnumId" from="hTypeParam"/>
                            <econdition field-name="parentId" from="parentId"/>
                        </entity-find>
                    </actions>
                </tree-sub-node>
            </tree-node>RootHierarchyRel
            <tree-sub-node node-name="OrganizationNode" list="childList">
                <actions>
                    <set field="parentId" from="'RootHierarchyRel'"/>
                    <entity-find entity-name="erp.hr.hierarchy.HierarchyRelationship" list="childList">
                        <econdition field-name="hierarchyTypeEnumId" from="hTypeParam"/>
                        <econdition field-name="parentId" from="parentId"/>
                    </entity-find>
                </actions>
            </tree-sub-node>
        </tree>
    </widgets>

</screen>