From d65b4a9a3a343eed5f418613405bbb5d6609cfe1 Mon Sep 17 00:00:00 2001 From: Leila Date: Wed, 22 Jan 2025 16:35:20 +0100 Subject: [PATCH] Fixed: Add missing form-name retrieval for auto-parameters-form (OFBIZ-12684) Although it is defined in the xsd, the form-name parameters is not retrieved during the generation or link informations. This add the retrieval and update the link when this parameter is used --- .../widget/model/CommonWidgetModels.java | 20 +++++++++++------- .../apache/ofbiz/widget/model/ModelForm.java | 21 ++++++++++++------- 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/CommonWidgetModels.java b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/CommonWidgetModels.java index a399979f6f7..7cda0c9ac42 100644 --- a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/CommonWidgetModels.java +++ b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/CommonWidgetModels.java @@ -394,14 +394,20 @@ public Link(Element linkElement) { } Element autoFormParamsElement = UtilXml.firstChildElement(linkElement, "auto-parameters-form"); if (autoFormParamsElement != null) { - Node formElement = autoFormParamsElement; - while (formElement != null - && formElement.getLocalName() != "form") { - formElement = formElement.getParentNode(); - } - if (formElement != null && formElement.getLocalName() != null) { - parameterList.add(new Parameter("_FORM_NAME_", ((Element) formElement).getAttribute("name") + "_AS_PARAM_", false)); + String formName = null; + if (autoFormParamsElement.hasAttribute("form-name") && autoFormParamsElement.getAttribute("form-name") != null) { + formName = autoFormParamsElement.getAttribute("form-name"); + } else { + Node formElement = autoFormParamsElement; + while (formElement != null + && formElement.getLocalName() != "form") { + formElement = formElement.getParentNode(); + } + if (formElement != null && formElement.getLocalName() != null) { + formName = ((Element) formElement).getAttribute("name"); + } } + parameterList.add(new Parameter("_FORM_NAME_", formName + "_AS_PARAM_", false)); } this.parameterList = Collections.unmodifiableList(parameterList); Element autoServiceParamsElement = UtilXml.firstChildElement(linkElement, "auto-parameters-service"); diff --git a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java index 6583363cc75..fce71a2dbab 100644 --- a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java +++ b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java @@ -2317,15 +2317,20 @@ public UpdateArea(Element updateAreaElement, String defaultServiceName, String d } Element autoFormParamsElement = UtilXml.firstChildElement(updateAreaElement, "auto-parameters-form"); if (autoFormParamsElement != null) { - Node formElement = autoFormParamsElement; - while (formElement != null - && formElement.getLocalName() != "form") { - formElement = formElement.getParentNode(); - } - if (formElement != null && formElement.getLocalName() != null) { - parameterList.add(new CommonWidgetModels.Parameter("_FORM_NAME_", ((Element) formElement).getAttribute("name") + "_AS_PARAM_", - false)); + String formName = null; + if (autoFormParamsElement.hasAttribute("form-name") && autoFormParamsElement.getAttribute("form-name") != null) { + formName = autoFormParamsElement.getAttribute("form-name"); + } else { + Node formElement = autoFormParamsElement; + while (formElement != null + && formElement.getLocalName() != "form") { + formElement = formElement.getParentNode(); + } + if (formElement != null && formElement.getLocalName() != null) { + formName = ((Element) formElement).getAttribute("name"); + } } + parameterList.add(new CommonWidgetModels.Parameter("_FORM_NAME_", formName + "_AS_PARAM_", false)); } this.parameterList = Collections.unmodifiableList(parameterList); Element autoServiceParamsElement = UtilXml.firstChildElement(updateAreaElement, "auto-parameters-service");