This is an automated email from the ASF dual-hosted git repository.
nmalin pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/trunk by this push:
new 69697d133c Fixed: Form under ModelGrid don't use values in parameters
and block others (OFBiz-13331)
69697d133c is described below
commit 69697d133c00130b6f4e4d5693d4826bd3781982
Author: Nicolas Malin <[email protected]>
AuthorDate: Tue Dec 23 17:06:28 2025 +0100
Fixed: Form under ModelGrid don't use values in parameters and block others
(OFBiz-13331)
When you load a widget screen, to know if a form collect some values on
parameters map, a boolean useRequestParameters is present on context.
If the model form detect that it build a ModelGrid it set
useRequestParameters at false.
Problem if some form need to collect information after a grid, we need to
set it to true.
To solve this we add the form name in context that not collect on
parameters to don't impact some others.
By the way, we reformat a few old code with new java language logical
---
.../org/apache/ofbiz/widget/model/ModelFormField.java | 18 ++++++------------
.../org/apache/ofbiz/widget/renderer/FormRenderer.java | 2 +-
2 files changed, 7 insertions(+), 13 deletions(-)
diff --git
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java
index f2f9cb947d..28ca63581d 100644
---
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java
+++
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java
@@ -289,8 +289,8 @@ public final class ModelFormField {
}
public String getEntry(Map<String, ? extends Object> context, String
defaultValue) {
- Boolean isError = (Boolean) context.get("isError");
- Boolean useRequestParameters = (Boolean)
context.get("useRequestParameters");
+ Boolean useRequestParameters = (Boolean)
context.getOrDefault("useRequestParameters", UtilGenerics.cast(Boolean.TRUE))
+ && (Boolean) context.getOrDefault("useRequestParameters." +
modelForm.getName(), UtilGenerics.cast(Boolean.TRUE));
Locale locale = (Locale) context.get("locale");
if (locale == null) {
@@ -305,10 +305,7 @@ public final class ModelFormField {
String returnValue;
- // if useRequestParameters is TRUE then parameters will always be
used, if FALSE then parameters will never be used
- // if isError is TRUE and useRequestParameters is not FALSE (ie is
null or TRUE) then parameters will be used
- if ((Boolean.TRUE.equals(isError) &&
!Boolean.FALSE.equals(useRequestParameters))
- || (Boolean.TRUE.equals(useRequestParameters))) {
+ if (useRequestParameters) {
Map<String, Object> parameters =
UtilGenerics.checkMap(context.get("parameters"), String.class, Object.class);
String parameterName = this.getParameterName(context);
if (parameters != null && parameters.get(parameterName) != null) {
@@ -2252,12 +2249,9 @@ public final class ModelFormField {
* @return the description
*/
public String getDescription(Map<String, Object> context) {
- String retVal = null;
- if (UtilValidate.isNotEmpty(this.description)) {
- retVal = this.description.expandString(context);
- } else {
- retVal = getModelFormField().getEntry(context);
- }
+ String retVal = UtilValidate.isNotEmpty(this.description)
+ ? this.description.expandString(context)
+ : getModelFormField().getEntry(context);
if (UtilValidate.isEmpty(retVal)) {
retVal = this.getDefaultValue(context);
diff --git
a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java
b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java
index 393e65d350..a8450ce0c7 100644
---
a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java
+++
b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java
@@ -266,7 +266,7 @@ public class FormRenderer {
// if this is a list form, don't use Request Parameters
if (modelForm instanceof ModelGrid) {
- context.put("useRequestParameters", Boolean.FALSE);
+ context.put("useRequestParameters." + modelForm.getName(),
Boolean.FALSE);
}
// find the highest position number to get the max positions used