This is an automated email from the ASF dual-hosted git repository.
ashish pushed a commit to branch release24.09
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/release24.09 by this push:
new 85d0e5c8cc Improve parameter handling and JSON construction in form
renderer and related macros (#982)
85d0e5c8cc is described below
commit 85d0e5c8ccd6232afc3061c5f1ec134630536906
Author: Ashish Vijaywargiya <[email protected]>
AuthorDate: Fri Mar 13 19:13:25 2026 +0530
Improve parameter handling and JSON construction in form renderer and
related macros (#982)
Improved: Improve parameter handling and JSON construction in form
renderer and related macros
(cherry picked from commit d4422b0f9816b31be0c07ccfdb8c7a375dd1596c)
---
.../widget/renderer/macro/MacroFormRenderer.java | 24 +++++++++++-----------
.../renderer/macro/MacroFormRendererTest.java | 2 +-
.../template/macro/HtmlFormMacroLibrary.ftl | 11 +---------
3 files changed, 14 insertions(+), 23 deletions(-)
diff --git
a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
index 608ff841a4..ce6ca15a5b 100644
---
a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
+++
b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
@@ -2347,19 +2347,19 @@ public final class MacroFormRenderer implements
FormStringRenderer {
height = request.getAttribute("height").toString();
}
StringBuilder targetParameters = new StringBuilder();
- if (UtilValidate.isNotEmpty(parameterMap)) {
- targetParameters.append("{");
- for (Map.Entry<String, String> parameter :
parameterMap.entrySet()) {
- if (targetParameters.length() > 1) {
- targetParameters.append(",");
+ if (UtilValidate.isNotEmpty(parameterMap) ||
UtilValidate.isNotEmpty(uniqueItemName)) {
+ try {
+ Map<String, Object> params = new java.util.TreeMap<>();
+ if (UtilValidate.isNotEmpty(parameterMap)) {
+ params.putAll(parameterMap);
}
- targetParameters.append("'");
- targetParameters.append(parameter.getKey());
- targetParameters.append("':'");
- targetParameters.append(parameter.getValue());
- targetParameters.append("'");
+ if (UtilValidate.isNotEmpty(uniqueItemName)) {
+ params.put("presentation", "layer");
+ }
+
targetParameters.append(org.apache.ofbiz.base.lang.JSON.from(params).toString());
+ } catch (Exception e) {
+ Debug.logError(e, "Error converting dialog params to
JSON", MODULE);
}
- targetParameters.append("}");
}
StringWriter sr = new StringWriter();
sr.append("<@makeHyperlinkString ");
@@ -2380,7 +2380,7 @@ public final class MacroFormRenderer implements
FormStringRenderer {
sr.append("\" alternate=\"");
sr.append(alt);
sr.append("\" targetParameters=\"");
- sr.append(targetParameters.toString());
+ sr.append(encodeDoubleQuotes(targetParameters.toString()));
sr.append("\" linkUrl=\"");
sr.append(linkUrl.toString());
sr.append("\" targetWindow=\"");
diff --git
a/framework/widget/src/test/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRendererTest.java
b/framework/widget/src/test/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRendererTest.java
index 3964d961ce..6c767af158 100644
---
a/framework/widget/src/test/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRendererTest.java
+++
b/framework/widget/src/test/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRendererTest.java
@@ -962,7 +962,7 @@ public class MacroFormRendererTest {
.put("description", description)
.put("linkUrl", "Encoded%20Target")
.put("id", id)
- .put("targetParameters", "{'k1':'v1','k2':'v2'}")
+ .put("targetParameters",
"{\\\"k1\\\":\\\"v1\\\",\\\"k2\\\":\\\"v2\\\",\\\"presentation\\\":\\\"layer\\\"}")
.put("width", width)
.put("confirmation", confirmation)
.put("targetWindow", targetWindow)
diff --git a/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl
b/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl
index 8acb39b025..09540394ef 100644
--- a/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl
+++ b/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl
@@ -839,17 +839,8 @@ Parameter: delegatorName, String, optional - name of the
delegator in context.
</#macro>
<#macro makeHyperlinkString hiddenFormName imgSrc imgTitle title alternate
linkUrl description text="" linkStyle="" event="" action="" targetParameters=""
targetWindow="" confirmation="" uniqueItemName="" height="" width="" id="">
<#if uniqueItemName?has_content>
- <#local params = "{"presentation": "layer"">
- <#if targetParameters?has_content && !targetParameters?is_hash>
- <#local parameterMap = targetParameters?eval>
- <#local parameterKeys = parameterMap?keys>
- <#list parameterKeys as key>
- <#local params += ","${key}":
"${parameterMap[key]}"">
- </#list>
- </#if>
- <#local params += "}">
<a href="javascript:void(0);" id="${uniqueItemName}_link"
- data-dialog-params="${params}"
+ data-dialog-params="${targetParameters?html}"
data-dialog-width="${width}"
data-dialog-height="${height}"
data-dialog-url="${linkUrl}"