You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2016/08/11 22:56:44 UTC

svn commit: r1756062 - in /myfaces/core/trunk/api/src/main/java/javax/faces/component/html: _ClassUtils.java _HtmlInputFile.java _MessageUtils.java _ParametrizableFacesMessage.java

Author: lu4242
Date: Thu Aug 11 22:56:44 2016
New Revision: 1756062

URL: http://svn.apache.org/viewvc?rev=1756062&view=rev
Log:
MYFACES-4060 Required attribute of h:inputFile tag is not working

Added:
    myfaces/core/trunk/api/src/main/java/javax/faces/component/html/_ClassUtils.java
      - copied, changed from r1751953, myfaces/core/trunk/api/src/main/java/javax/faces/component/_ClassUtils.java
    myfaces/core/trunk/api/src/main/java/javax/faces/component/html/_MessageUtils.java
      - copied, changed from r1751953, myfaces/core/trunk/api/src/main/java/javax/faces/component/_MessageUtils.java
    myfaces/core/trunk/api/src/main/java/javax/faces/component/html/_ParametrizableFacesMessage.java
      - copied, changed from r1751953, myfaces/core/trunk/api/src/main/java/javax/faces/component/_ParametrizableFacesMessage.java
Modified:
    myfaces/core/trunk/api/src/main/java/javax/faces/component/html/_HtmlInputFile.java

Copied: myfaces/core/trunk/api/src/main/java/javax/faces/component/html/_ClassUtils.java (from r1751953, myfaces/core/trunk/api/src/main/java/javax/faces/component/_ClassUtils.java)
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/api/src/main/java/javax/faces/component/html/_ClassUtils.java?p2=myfaces/core/trunk/api/src/main/java/javax/faces/component/html/_ClassUtils.java&p1=myfaces/core/trunk/api/src/main/java/javax/faces/component/_ClassUtils.java&r1=1751953&r2=1756062&rev=1756062&view=diff
==============================================================================
--- myfaces/core/trunk/api/src/main/java/javax/faces/component/_ClassUtils.java (original)
+++ myfaces/core/trunk/api/src/main/java/javax/faces/component/html/_ClassUtils.java Thu Aug 11 22:56:44 2016
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package javax.faces.component;
+package javax.faces.component.html;
 
 import java.io.IOException;
 import java.io.InputStream;

Modified: myfaces/core/trunk/api/src/main/java/javax/faces/component/html/_HtmlInputFile.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/api/src/main/java/javax/faces/component/html/_HtmlInputFile.java?rev=1756062&r1=1756061&r2=1756062&view=diff
==============================================================================
--- myfaces/core/trunk/api/src/main/java/javax/faces/component/html/_HtmlInputFile.java (original)
+++ myfaces/core/trunk/api/src/main/java/javax/faces/component/html/_HtmlInputFile.java Thu Aug 11 22:56:44 2016
@@ -19,6 +19,7 @@
 package javax.faces.component.html;
 
 import javax.faces.component.UIInput;
+import javax.faces.context.FacesContext;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFComponent;
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFProperty;
@@ -74,4 +75,82 @@ abstract class _HtmlInputFile extends UI
   @JSFProperty
   public abstract String getAutocomplete();
 
+    protected void validateValue(FacesContext context, Object convertedValue)
+    {
+        if (!isValid())
+        {
+            return;
+        }
+
+        // If our value is empty, check the required property
+        boolean isEmpty = isEmptyValue(convertedValue); 
+
+        if (isRequired() && isEmpty)
+        {
+            if (getRequiredMessage() != null)
+            {
+                String requiredMessage = getRequiredMessage();
+                context.addMessage(this.getClientId(context), new javax.faces.application.FacesMessage(
+                        javax.faces.application.FacesMessage.SEVERITY_ERROR,
+                    requiredMessage, requiredMessage));
+            }
+            else
+            {
+                _MessageUtils.addErrorMessage(context, this, REQUIRED_MESSAGE_ID,
+                    new Object[] { _MessageUtils.getLabel(context, this) });
+            }
+            setValid(false);
+            return;
+        }
+
+        if (!isEmpty)
+        {
+            super.validateValue(context, convertedValue);
+        }
+    }
+    
+    private static boolean isEmptyValue(Object value)
+    {
+        if (value == null)
+        {
+            return true;
+        }
+        else if (value instanceof String)
+        {
+            if ( ((String)value).trim().length() <= 0 )
+            {
+                return true;
+            }
+        }
+        else if (value instanceof java.util.Collection)
+        {
+            if ( ((java.util.Collection)value).isEmpty())
+            {
+                return true;
+            }
+        }
+        else if (value.getClass().isArray())
+        {
+            if (java.lang.reflect.Array.getLength(value) <= 0)
+            {
+                return true;
+            }
+        }
+        else if (value instanceof java.util.Map)
+        {
+            if ( ((java.util.Map)value).isEmpty())
+            {
+                return true;
+            }
+        }
+        else if (value instanceof javax.servlet.http.Part) 
+        {
+            if (((javax.servlet.http.Part)value).getSize() <= 0) 
+            {
+                return true;
+            }
+        }
+        return false;
+    }
+
 }

Copied: myfaces/core/trunk/api/src/main/java/javax/faces/component/html/_MessageUtils.java (from r1751953, myfaces/core/trunk/api/src/main/java/javax/faces/component/_MessageUtils.java)
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/api/src/main/java/javax/faces/component/html/_MessageUtils.java?p2=myfaces/core/trunk/api/src/main/java/javax/faces/component/html/_MessageUtils.java&p1=myfaces/core/trunk/api/src/main/java/javax/faces/component/_MessageUtils.java&r1=1751953&r2=1756062&rev=1756062&view=diff
==============================================================================
--- myfaces/core/trunk/api/src/main/java/javax/faces/component/_MessageUtils.java (original)
+++ myfaces/core/trunk/api/src/main/java/javax/faces/component/html/_MessageUtils.java Thu Aug 11 22:56:44 2016
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package javax.faces.component;
+package javax.faces.component.html;
 
 import javax.el.ValueExpression;
 import javax.faces.application.FacesMessage;
@@ -25,6 +25,7 @@ import javax.faces.context.FacesContext;
 import java.util.Locale;
 import java.util.MissingResourceException;
 import java.util.ResourceBundle;
+import javax.faces.component.UIComponent;
 
 class _MessageUtils
 {

Copied: myfaces/core/trunk/api/src/main/java/javax/faces/component/html/_ParametrizableFacesMessage.java (from r1751953, myfaces/core/trunk/api/src/main/java/javax/faces/component/_ParametrizableFacesMessage.java)
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/api/src/main/java/javax/faces/component/html/_ParametrizableFacesMessage.java?p2=myfaces/core/trunk/api/src/main/java/javax/faces/component/html/_ParametrizableFacesMessage.java&p1=myfaces/core/trunk/api/src/main/java/javax/faces/component/_ParametrizableFacesMessage.java&r1=1751953&r2=1756062&rev=1756062&view=diff
==============================================================================
--- myfaces/core/trunk/api/src/main/java/javax/faces/component/_ParametrizableFacesMessage.java (original)
+++ myfaces/core/trunk/api/src/main/java/javax/faces/component/html/_ParametrizableFacesMessage.java Thu Aug 11 22:56:44 2016
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package javax.faces.component;
+package javax.faces.component.html;
 
 import java.text.MessageFormat;
 import java.util.Locale;