This is an automated email from the ASF dual-hosted git repository.

mridulpathak 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 e04a81de82 Fixed: Do not request the non-existent jquery-validation 
messages_en.js on every page (OFBIZ-13652)
e04a81de82 is described below

commit e04a81de822a5ed49316b8747214481830e708f5
Author: Mridul Pathak <[email protected]>
AuthorDate: Wed Oct 7 17:25:24 2026 +0530

    Fixed: Do not request the non-existent jquery-validation messages_en.js on 
every page (OFBIZ-13652)
    
    The jquery-validation package ships no messages_en.js, as English is built 
in, but the mapping of the JS language files used it as the fallback for 
English and for the locales without a localization file, so every page request 
got a 404. The fallback is now an OFBiz specific empty messages_en.js, the same 
way the one of the datepicker, and the generator, its template and the 
generated JsLanguageFilesMapping are updated accordingly.
---
 .../ofbiz/common/JsLanguageFileMappingCreator.java |  6 ++-
 .../ofbiz/common/JsLanguageFilesMapping.java       | 60 +++++++++++-----------
 .../template/JsLanguageFilesMapping.ftl            |  3 +-
 .../common-theme/js/i18n/validation/messages_en.js | 23 +++++++++
 4 files changed, 58 insertions(+), 34 deletions(-)

diff --git 
a/framework/common/src/main/java/org/apache/ofbiz/common/JsLanguageFileMappingCreator.java
 
b/framework/common/src/main/java/org/apache/ofbiz/common/JsLanguageFileMappingCreator.java
index 8ed3829efe..8a039a47c0 100644
--- 
a/framework/common/src/main/java/org/apache/ofbiz/common/JsLanguageFileMappingCreator.java
+++ 
b/framework/common/src/main/java/org/apache/ofbiz/common/JsLanguageFileMappingCreator.java
@@ -72,6 +72,8 @@ public class JsLanguageFileMappingCreator {
         String dateTimePickerPrefix = "jquery-ui-timepicker-";
         String defaultLocaleDateJs = "en-US";
         String defaultLocaleJquery = "en"; // Beware to keep the OFBiz 
specific datepicker-en.js file when upgrading...
+        // jquery-validation has no messages_en.js, so OFBiz provides one. 
Beware to keep it when upgrading...
+        String defaultValidationFile = 
"/common/js/i18n/validation/messages_en.js";
 
         for (Locale locale : localeList) {
             String displayCountry = locale.toString();
@@ -126,7 +128,7 @@ public class JsLanguageFileMappingCreator {
                         fileUrl = validateRelPath + validateLocalePrefix + 
strippedLocale + jsFilePostFix;
                     } else {
                         // use default language en as fallback
-                        fileUrl = validateRelPath + validateLocalePrefix + 
defaultLocaleJquery + jsFilePostFix;
+                        fileUrl = defaultValidationFile;
                     }
                 }
             } else { // Then try lang only
@@ -136,7 +138,7 @@ public class JsLanguageFileMappingCreator {
                     fileUrl = validateRelPath + validateLocalePrefix + 
strippedLocale + jsFilePostFix;
                 } else {
                     // use default language en as fallback
-                    fileUrl = validateRelPath + validateLocalePrefix + 
defaultLocaleJquery + jsFilePostFix;
+                    fileUrl = defaultValidationFile;
                 }
             }
             validationLocaleFile.put(displayCountry, fileUrl);
diff --git 
a/framework/common/src/main/java/org/apache/ofbiz/common/JsLanguageFilesMapping.java
 
b/framework/common/src/main/java/org/apache/ofbiz/common/JsLanguageFilesMapping.java
index 42e6d44f89..29ad4278c2 100644
--- 
a/framework/common/src/main/java/org/apache/ofbiz/common/JsLanguageFilesMapping.java
+++ 
b/framework/common/src/main/java/org/apache/ofbiz/common/JsLanguageFilesMapping.java
@@ -382,11 +382,11 @@ public final class JsLanguageFilesMapping {
 
     public static class Validation {
         private static Map<String, String> localeFiles = new HashMap<>();
-        private static String defaultValidation = 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js";
+        private static String defaultValidation = 
"/common/js/i18n/validation/messages_en.js";
 
         static {
-            localeFiles.put("sq", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
-            localeFiles.put("sq_AL", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
+            localeFiles.put("sq", "/common/js/i18n/validation/messages_en.js");
+            localeFiles.put("sq_AL", 
"/common/js/i18n/validation/messages_en.js");
             localeFiles.put("ar", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_ar.js");
             localeFiles.put("ar_DZ", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_ar.js");
             localeFiles.put("ar_BH", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_ar.js");
@@ -405,8 +405,8 @@ public final class JsLanguageFilesMapping {
             localeFiles.put("ar_TN", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_ar.js");
             localeFiles.put("ar_AE", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_ar.js");
             localeFiles.put("ar_YE", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_ar.js");
-            localeFiles.put("be", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
-            localeFiles.put("be_BY", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
+            localeFiles.put("be", "/common/js/i18n/validation/messages_en.js");
+            localeFiles.put("be_BY", 
"/common/js/i18n/validation/messages_en.js");
             localeFiles.put("bg", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_bg.js");
             localeFiles.put("bg_BG", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_bg.js");
             localeFiles.put("ca", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_ca.js");
@@ -425,18 +425,18 @@ public final class JsLanguageFilesMapping {
             localeFiles.put("nl", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_nl.js");
             localeFiles.put("nl_BE", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_nl.js");
             localeFiles.put("nl_NL", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_nl.js");
-            localeFiles.put("en", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
-            localeFiles.put("en_AU", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
-            localeFiles.put("en_CA", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
-            localeFiles.put("en_IN", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
-            localeFiles.put("en_IE", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
-            localeFiles.put("en_MT", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
-            localeFiles.put("en_NZ", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
-            localeFiles.put("en_PH", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
-            localeFiles.put("en_SG", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
-            localeFiles.put("en_ZA", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
-            localeFiles.put("en_GB", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
-            localeFiles.put("en_US", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
+            localeFiles.put("en", "/common/js/i18n/validation/messages_en.js");
+            localeFiles.put("en_AU", 
"/common/js/i18n/validation/messages_en.js");
+            localeFiles.put("en_CA", 
"/common/js/i18n/validation/messages_en.js");
+            localeFiles.put("en_IN", 
"/common/js/i18n/validation/messages_en.js");
+            localeFiles.put("en_IE", 
"/common/js/i18n/validation/messages_en.js");
+            localeFiles.put("en_MT", 
"/common/js/i18n/validation/messages_en.js");
+            localeFiles.put("en_NZ", 
"/common/js/i18n/validation/messages_en.js");
+            localeFiles.put("en_PH", 
"/common/js/i18n/validation/messages_en.js");
+            localeFiles.put("en_SG", 
"/common/js/i18n/validation/messages_en.js");
+            localeFiles.put("en_ZA", 
"/common/js/i18n/validation/messages_en.js");
+            localeFiles.put("en_GB", 
"/common/js/i18n/validation/messages_en.js");
+            localeFiles.put("en_US", 
"/common/js/i18n/validation/messages_en.js");
             localeFiles.put("et", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_et.js");
             localeFiles.put("et_EE", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_et.js");
             localeFiles.put("fi", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_fi.js");
@@ -456,18 +456,18 @@ public final class JsLanguageFilesMapping {
             localeFiles.put("el", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_el.js");
             localeFiles.put("el_CY", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_el.js");
             localeFiles.put("el_GR", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_el.js");
-            localeFiles.put("iw", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
-            localeFiles.put("iw_IL", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
-            localeFiles.put("hi", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
-            localeFiles.put("hi_IN", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
+            localeFiles.put("iw", "/common/js/i18n/validation/messages_en.js");
+            localeFiles.put("iw_IL", 
"/common/js/i18n/validation/messages_en.js");
+            localeFiles.put("hi", "/common/js/i18n/validation/messages_en.js");
+            localeFiles.put("hi_IN", 
"/common/js/i18n/validation/messages_en.js");
             localeFiles.put("hu", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_hu.js");
             localeFiles.put("hu_HU", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_hu.js");
             localeFiles.put("is", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_is.js");
             localeFiles.put("is_IS", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_is.js");
-            localeFiles.put("in", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
-            localeFiles.put("in_ID", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
-            localeFiles.put("ga", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
-            localeFiles.put("ga_IE", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
+            localeFiles.put("in", "/common/js/i18n/validation/messages_en.js");
+            localeFiles.put("in_ID", 
"/common/js/i18n/validation/messages_en.js");
+            localeFiles.put("ga", "/common/js/i18n/validation/messages_en.js");
+            localeFiles.put("ga_IE", 
"/common/js/i18n/validation/messages_en.js");
             localeFiles.put("it", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_it.js");
             localeFiles.put("it_IT", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_it.js");
             localeFiles.put("it_CH", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_it.js");
@@ -482,16 +482,16 @@ public final class JsLanguageFilesMapping {
             localeFiles.put("lt_LT", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_lt.js");
             localeFiles.put("mk", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_mk.js");
             localeFiles.put("mk_MK", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_mk.js");
-            localeFiles.put("ms", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
-            localeFiles.put("ms_MY", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
-            localeFiles.put("mt", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
-            localeFiles.put("mt_MT", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
+            localeFiles.put("ms", "/common/js/i18n/validation/messages_en.js");
+            localeFiles.put("ms_MY", 
"/common/js/i18n/validation/messages_en.js");
+            localeFiles.put("mt", "/common/js/i18n/validation/messages_en.js");
+            localeFiles.put("mt_MT", 
"/common/js/i18n/validation/messages_en.js");
             localeFiles.put("no", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_no.js");
             localeFiles.put("no_NO", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_no.js");
             localeFiles.put("no_NO_NY", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_no.js");
             localeFiles.put("pl", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_pl.js");
             localeFiles.put("pl_PL", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_pl.js");
-            localeFiles.put("pt", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js");
+            localeFiles.put("pt", "/common/js/i18n/validation/messages_en.js");
             localeFiles.put("pt_BR", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_pt_BR.js");
             localeFiles.put("pt_PT", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_pt_PT.js");
             localeFiles.put("ro", 
"/common/js/node_modules/jquery-validation/dist/localization/messages_ro.js");
diff --git a/themes/common-theme/template/JsLanguageFilesMapping.ftl 
b/themes/common-theme/template/JsLanguageFilesMapping.ftl
index a6e25d976a..f5db1cb535 100644
--- a/themes/common-theme/template/JsLanguageFilesMapping.ftl
+++ b/themes/common-theme/template/JsLanguageFilesMapping.ftl
@@ -74,8 +74,7 @@ public final class JsLanguageFilesMapping {
 
     public static class Validation {
         private static Map<String, String> localeFiles = new HashMap<>();
-        <#--TODO Handle defaultValidation as messages_en is missing with the 
default distribution-->
-        private static String defaultValidation = 
"/common/js/node_modules/jquery-validation/dist/localization/messages_en.js";
+        private static String defaultValidation = 
"/common/js/i18n/validation/messages_en.js";
 
         static {
             <#list validation.keySet() as validationFiles>
diff --git 
a/themes/common-theme/webapp/common-theme/js/i18n/validation/messages_en.js 
b/themes/common-theme/webapp/common-theme/js/i18n/validation/messages_en.js
new file mode 100644
index 0000000000..3c0658ddda
--- /dev/null
+++ b/themes/common-theme/webapp/common-theme/js/i18n/validation/messages_en.js
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+// English localization of the jQuery Validation plugin.
+// The messages of the plugin are in English by default, and the 
jquery-validation package ships no messages_en.js,
+// so this OFBiz specific file does nothing. It is the fallback for the 
locales without a localization file, and it
+// avoids a "404 Not Found" for a file that does not exist. Beware to keep it 
when upgrading jquery-validation.

Reply via email to