Repository: primefaces/primefaces (java)

Issue:
Barcode: issues with PF15 using EAN and UPC
### Describe the bug

Original Report: https://github.com/orgs/primefaces/discussions/3693 by @pangbuddy

Issue 1. The Check digit is not accetable in PF 15.  it's accept only 12-digit value (the original value is 13-digit with check digit.).
Issue 2. The leading number is missing in barcode image.

Exists in EAN13 and UPCA, which I've only tested.

What I need is the input value/barcode image value/scanned value, they are all same as in FP14.

`<p:barcode value="123456789012" type="ean13" width="250"/>`
![Image_20250307173420](https://github.com/user-attachments/assets/a99882cd-5913-4ae7-bbe2-a6a6ae0a84ed)

Thanks in advance!

### Reproducer

Showcase: https://quarkus-faces-melloware-8a6a34c1.koyeb.app/ui/multimedia/barcode.xhtml

### Expected behavior

Should have the check digit

### PrimeFaces edition

Community

### PrimeFaces version

15.0.0

### Theme

ALL

### JSF implementation

Mojarra

### JSF version

4.0

### Java version

11

### Browser(s)

_No response_

Pull request:
Fix #13508: 15.0.1 Barcode add quiet zone properties
Fix #13508: 15.0.1 Barcode add quiet zone properties

Patch:
diff --git a/docs/15_0_0/components/barcode.md b/docs/15_0_0/components/barcode.md
index f60065d58e..94d4953824 100644
--- a/docs/15_0_0/components/barcode.md
+++ b/docs/15_0_0/components/barcode.md
@@ -41,6 +41,8 @@ Barcode component is used to display various barcode formats.
 | onmouseup | null | String | onmouseup DOM event handler
 | orientation | 0 | Integer | Orientation in terms of angle. (0, 90, 180, 270)
 | qrErrorConnection | L | String | The QR Code error correction level. L (default) - up to 7% damage. M - up to 15% damage. Q - up to 25% damage. H - up to 30% damage
+| quietZoneHorizontal | 10 | Integer | The horizontal quiet zone of the barcode in pixels.
+| quietZoneVertical | 1 | Integer | The vertical quiet zone of the barcode in pixels.
 | style | null | String | Style of the image
 | styleClass | null | String | Style class of the image
 | title | null | String | Title of the image
@@ -94,6 +96,6 @@ Barcode component uses **Okapi** library underneath to generate barcodes. The fo
 <dependency>
     <groupId>uk.org.okapibarcode</groupId>
     <artifactId>okapibarcode</artifactId>
-    <version>0.4.9</version>
+    <version>0.5.0</version>
 </dependency>
 ```
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index dea90000fc..ccbabb7391 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
     <groupId>org.primefaces</groupId>
     <artifactId>primefaces-parent</artifactId>
     <packaging>pom</packaging>
-    <version>15.0.0</version>
+    <version>15.0.1-SNAPSHOT</version>
 
     <name>PrimeFaces Parent</name>
     <url>https://www.primefaces.org</url>
diff --git a/primefaces-cli/pom.xml b/primefaces-cli/pom.xml
index 3dccef276e..efe0b68175 100644
--- a/primefaces-cli/pom.xml
+++ b/primefaces-cli/pom.xml
@@ -7,7 +7,7 @@
     <parent>
         <groupId>org.primefaces</groupId>
         <artifactId>primefaces-parent</artifactId>
-        <version>15.0.0</version>
+        <version>15.0.1-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/primefaces-coverage/pom.xml b/primefaces-coverage/pom.xml
index c07a847265..513d819ead 100644
--- a/primefaces-coverage/pom.xml
+++ b/primefaces-coverage/pom.xml
@@ -7,7 +7,7 @@
     <parent>
         <groupId>org.primefaces</groupId>
         <artifactId>primefaces-parent</artifactId>
-        <version>15.0.0</version>
+        <version>15.0.1-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/primefaces-selenium/pom.xml b/primefaces-selenium/pom.xml
index 1d476eeefe..d049c9875f 100644
--- a/primefaces-selenium/pom.xml
+++ b/primefaces-selenium/pom.xml
@@ -7,7 +7,7 @@
     <parent>
         <groupId>org.primefaces</groupId>
         <artifactId>primefaces-parent</artifactId>
-        <version>15.0.0</version>
+        <version>15.0.1-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/primefaces-selenium/primefaces-selenium-components/pom.xml b/primefaces-selenium/primefaces-selenium-components/pom.xml
index 02261e9ccb..1df9d33c2e 100644
--- a/primefaces-selenium/primefaces-selenium-components/pom.xml
+++ b/primefaces-selenium/primefaces-selenium-components/pom.xml
@@ -7,7 +7,7 @@
     <parent>
         <groupId>org.primefaces</groupId>
         <artifactId>primefaces-selenium</artifactId>
-        <version>15.0.0</version>
+        <version>15.0.1-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/primefaces-selenium/primefaces-selenium-core/pom.xml b/primefaces-selenium/primefaces-selenium-core/pom.xml
index c8458e5a5d..738bc3a10f 100644
--- a/primefaces-selenium/primefaces-selenium-core/pom.xml
+++ b/primefaces-selenium/primefaces-selenium-core/pom.xml
@@ -7,7 +7,7 @@
     <parent>
         <groupId>org.primefaces</groupId>
         <artifactId>primefaces-selenium</artifactId>
-        <version>15.0.0</version>
+        <version>15.0.1-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/primefaces-showcase/pom.xml b/primefaces-showcase/pom.xml
index 126e173510..277ab385bc 100644
--- a/primefaces-showcase/pom.xml
+++ b/primefaces-showcase/pom.xml
@@ -7,7 +7,7 @@
     <parent>
         <groupId>org.primefaces</groupId>
         <artifactId>primefaces-parent</artifactId>
-        <version>15.0.0</version>
+        <version>15.0.1-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/primefaces-showcase/src/main/java/org/primefaces/showcase/menu/AppMenu.java b/primefaces-showcase/src/main/java/org/primefaces/showcase/menu/AppMenu.java
index 9a3a944b51..eabab13566 100644
--- a/primefaces-showcase/src/main/java/org/primefaces/showcase/menu/AppMenu.java
+++ b/primefaces-showcase/src/main/java/org/primefaces/showcase/menu/AppMenu.java
@@ -47,8 +47,8 @@ public class AppMenu {
         //GENERAL CATEGORY START
         List<MenuItem> generalMenuItems = new ArrayList<>();
         generalMenuItems.add(new MenuItem("Get Started", "/getstarted"));
-        generalMenuItems.add(new MenuItem("Documentation", "https://primefaces.github.io/primefaces/14_0_0/#/"));
-        generalMenuItems.add(new MenuItem("Content Security", "https://primefaces.github.io/primefaces/14_0_0/#/core/contentsecuritypolicy"));
+        generalMenuItems.add(new MenuItem("Documentation", "https://primefaces.github.io/primefaces/15_0_0/#/"));
+        generalMenuItems.add(new MenuItem("Content Security", "https://primefaces.github.io/primefaces/15_0_0/#/core/contentsecuritypolicy"));
         menuCategories.add(new MenuCategory("General", generalMenuItems));
         //GENERAL CATEGORY END
 
diff --git a/primefaces-showcase/src/main/webapp/WEB-INF/template.xhtml b/primefaces-showcase/src/main/webapp/WEB-INF/template.xhtml
index ed0fe3b8e9..13bb971376 100644
--- a/primefaces-showcase/src/main/webapp/WEB-INF/template.xhtml
+++ b/primefaces-showcase/src/main/webapp/WEB-INF/template.xhtml
@@ -68,7 +68,7 @@
                         </div>
                         <div class="feature-documentation">
                             <ui:fragment rendered="#{not empty documentationLink}">
-                                <a class="documentation-link" href="https://primefaces.github.io/primefaces/14_0_0/##{documentationLink}" target="_blank" rel="noopener noreferrer">
+                                <a class="documentation-link" href="https://primefaces.github.io/primefaces/15_0_0/##{documentationLink}" target="_blank" rel="noopener noreferrer">
                                     <i class="pi pi-external-link"></i> 
                                     <span>SERVER API</span>
                                 </a>
diff --git a/primefaces-themes/pom.xml b/primefaces-themes/pom.xml
index 0110e18e1e..ab91f18723 100644
--- a/primefaces-themes/pom.xml
+++ b/primefaces-themes/pom.xml
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.primefaces</groupId>
         <artifactId>primefaces-parent</artifactId>
-        <version>15.0.0</version>
+        <version>15.0.1-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>primefaces-themes</artifactId>
diff --git a/primefaces/pom.xml b/primefaces/pom.xml
index 9cd0c82df1..1dbfb9561d 100644
--- a/primefaces/pom.xml
+++ b/primefaces/pom.xml
@@ -7,7 +7,7 @@
     <parent>
         <groupId>org.primefaces</groupId>
         <artifactId>primefaces-parent</artifactId>
-        <version>15.0.0</version>
+        <version>15.0.1-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/primefaces/src/main/java/org/primefaces/component/barcode/BarcodeBase.java b/primefaces/src/main/java/org/primefaces/component/barcode/BarcodeBase.java
index 49714f67c8..769573c813 100644
--- a/primefaces/src/main/java/org/primefaces/component/barcode/BarcodeBase.java
+++ b/primefaces/src/main/java/org/primefaces/component/barcode/BarcodeBase.java
@@ -40,7 +40,9 @@ public abstract class BarcodeBase extends HtmlGraphicImage {
         orientation,
         qrErrorCorrection,
         hrp,
-        magnification
+        magnification,
+        quietZoneHorizontal,
+        quietZoneVertical
     }
 
     public BarcodeBase() {
@@ -108,4 +110,20 @@ public abstract class BarcodeBase extends HtmlGraphicImage {
         getStateHelper().put(PropertyKeys.magnification, magnification);
     }
 
+    public int getQuietZoneHorizontal() {
+        return (Integer) getStateHelper().eval(PropertyKeys.quietZoneHorizontal, 10);
+    }
+
+    public void setQuietZoneHorizontal(int quietZoneHorizontal) {
+        getStateHelper().put(PropertyKeys.quietZoneHorizontal, quietZoneHorizontal);
+    }
+
+    public int getQuietZoneVertical() {
+        return (Integer) getStateHelper().eval(PropertyKeys.quietZoneVertical, 1);
+    }
+
+    public void setQuietZoneVertical(int quietZoneVertical) {
+        getStateHelper().put(PropertyKeys.quietZoneVertical, quietZoneVertical);
+    }
+
 }
\ No newline at end of file
diff --git a/primefaces/src/main/java/org/primefaces/component/barcode/BarcodeHandler.java b/primefaces/src/main/java/org/primefaces/component/barcode/BarcodeHandler.java
index b3cc694fba..0cdeb549b3 100644
--- a/primefaces/src/main/java/org/primefaces/component/barcode/BarcodeHandler.java
+++ b/primefaces/src/main/java/org/primefaces/component/barcode/BarcodeHandler.java
@@ -102,9 +102,13 @@ public class BarcodeHandler extends BaseDynamicContentHandler {
             int rotation = Integers.normalizeRotation(Integer.parseInt(params.get("ori")));
             double magnification = Double.parseDouble(params.get("mag"));
             boolean cache = Boolean.parseBoolean(params.get(Constants.DYNAMIC_CONTENT_CACHE_PARAM));
+            int quietZoneHorizontal = Integer.parseInt(params.get("mh"));
+            int quietZoneVertical = Integer.parseInt(params.get("mv"));
 
             generator.setHumanReadableLocation(HumanReadableLocation.valueOf(hrp.toUpperCase(Locale.ROOT)));
             generator.setContent(value);
+            generator.setQuietZoneHorizontal(quietZoneHorizontal);
+            generator.setQuietZoneVertical(quietZoneVertical);
 
             if (generator instanceof QrCode) {
                 ((QrCode) generator).setPreferredEccLevel(EccLevel.valueOf(params.get("qrec")));
diff --git a/primefaces/src/main/java/org/primefaces/component/barcode/BarcodeRenderer.java b/primefaces/src/main/java/org/primefaces/component/barcode/BarcodeRenderer.java
index dc7e0811f2..48b5ac5342 100644
--- a/primefaces/src/main/java/org/primefaces/component/barcode/BarcodeRenderer.java
+++ b/primefaces/src/main/java/org/primefaces/component/barcode/BarcodeRenderer.java
@@ -83,6 +83,8 @@ public class BarcodeRenderer extends CoreRenderer {
                     .append("&").append(Constants.DYNAMIC_CONTENT_CACHE_PARAM).append("=").append(barcode.isCache())
                     .append("&ori=").append(barcode.getOrientation())
                     .append("&mag=").append(barcode.getMagnification())
+                    .append("&mh=").append(barcode.getQuietZoneHorizontal())
+                    .append("&mv=").append(barcode.getQuietZoneVertical())
                     .toString();
         }
         catch (UnsupportedEncodingException ex) {
diff --git a/primefaces/src/main/resources/META-INF/primefaces.taglib.xml b/primefaces/src/main/resources/META-INF/primefaces.taglib.xml
index 2a23d7f58a..e83f3bd29a 100644
--- a/primefaces/src/main/resources/META-INF/primefaces.taglib.xml
+++ b/primefaces/src/main/resources/META-INF/primefaces.taglib.xml
@@ -2102,6 +2102,22 @@
             <required>false</required>
             <type>java.lang.Double</type>
         </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The horizontal quiet zone of the barcode in pixels. Default is 10 pixels.]]>
+            </description>
+            <name>quietZoneHorizontal</name>
+            <required>false</required>
+            <type>java.lang.Integer</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The vertical quiet zone of the barcode in pixels. Default is 1 pixel.]]>
+            </description>
+            <name>quietZoneVertical</name>
+            <required>false</required>
+            <type>java.lang.Integer</type>
+        </attribute>
         <attribute>
             <description>
                 <![CDATA[The QR Code error correction level. L (default) - up to 7% damage. M - up to 15% damage. Q - up to 25% damage. H - up to 30% damage]]>
diff --git a/primefaces/src/main/resources/META-INF/resources/primefaces/fileupload/2-fileupload.js b/primefaces/src/main/resources/META-INF/resources/primefaces/fileupload/2-fileupload.js
index 293b675b45..9159557515 100644
--- a/primefaces/src/main/resources/META-INF/resources/primefaces/fileupload/2-fileupload.js
+++ b/primefaces/src/main/resources/META-INF/resources/primefaces/fileupload/2-fileupload.js
@@ -237,11 +237,25 @@ PrimeFaces.widget.FileUpload = PrimeFaces.widget.BaseWidget.extend({
                 var file = data.files ? data.files[0] : null;
                 if (file) {
                     $this.clearMessages();
-
-                    // we need to pass the real invisible input, which contains the filelist
-                    var validationResult = PrimeFaces.validation.validate($this.jq, dataFileInput, update, true, true, true, true, false);
+ 
+                    // #13211 Create a new DataTransfer object to hold just the current file
+                    var dataTransfer = new DataTransfer();
+                    dataTransfer.items.add(file);
+                    // Create a temporary file input element
+                    var singleFileInput = $('<input type="file" />');
+                    // Set the files on the temporary input
+                    singleFileInput[0].files = dataTransfer.files;
+                    // Copy validation metadata from original input to temporary one
+                    singleFileInput.data(dataFileInput.data());
+ 
+                    // pass the single file input being processed
+                    var validationResult = PrimeFaces.validation.validate($this.jq, singleFileInput, update, true, true, true, true, false);
+ 
+                    // clean up the temporary file input
+                    singleFileInput.remove();
+ 
+                    // if the file is invalid, show the message
                     if (!validationResult.valid) {
-
                         // if the messages hasn't been rendered, use our internal messages display
                         for (let clientId in validationResult.messages) {
                             for (let msg of validationResult.messages[clientId]) {


Test patch:
diff --git a/primefaces-integration-tests-jakarta/pom.xml b/primefaces-integration-tests-jakarta/pom.xml
index 35f1f08fbd..dcff0b7bc5 100644
--- a/primefaces-integration-tests-jakarta/pom.xml
+++ b/primefaces-integration-tests-jakarta/pom.xml
@@ -7,7 +7,7 @@
     <parent>
         <groupId>org.primefaces</groupId>
         <artifactId>primefaces-parent</artifactId>
-        <version>15.0.0</version>
+        <version>15.0.1-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/primefaces-integration-tests/pom.xml b/primefaces-integration-tests/pom.xml
index 8afcf0a5c4..9a73113172 100644
--- a/primefaces-integration-tests/pom.xml
+++ b/primefaces-integration-tests/pom.xml
@@ -7,7 +7,7 @@
     <parent>
         <groupId>org.primefaces</groupId>
         <artifactId>primefaces-parent</artifactId>
-        <version>15.0.0</version>
+        <version>15.0.1-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>