You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Abhilash Kumar (JIRA)" <de...@myfaces.apache.org> on 2006/10/31 07:01:17 UTC

[jira] Created: (TOMAHAWK-759) When type="both", inputDate does not accept null value

When type="both", inputDate does not accept null value
------------------------------------------------------

                 Key: TOMAHAWK-759
                 URL: http://issues.apache.org/jira/browse/TOMAHAWK-759
             Project: MyFaces Tomahawk
          Issue Type: Bug
          Components: Date
    Affects Versions: 1.1.5-SNAPSHOT
         Environment: JDK 1.5.0.07, Tomcat 5.5.17 or Tomcat 5.0.28
            Reporter: Abhilash Kumar


When the value of the type attribute of the inputDate is "both", it is not accepting null values even if required is not true. This can be easily reproduced using the  Date example of examples webapp of SNAPAHOT-1.1.5. 

1. Take the date example - (/date.jsf)
 2. Enter null value for the third input component ( Where both date and time is to be entered ) and click on update. This will give a validation error saying that the entered date is not valid.

I have debugged the code and found out that the actual exception is a NumberFormatException from HtmlInputDate.parse(). This happens because the code bypasses the "isSubmitValid()" function where the submitted values are checked for null. The "isTimeSubmitted()" function returns true in the case of type=both. For type==both, only hours and minutes are to be checked (as in the case of short_time) and there is no need of checking the seconds value (which will have value = 0 in the case of type = both). So the fix can be removal of  type.equals("both") from the if condition in the second line of the function.

 Class -> org.apache.myfaces.custom.date.HtmlInputDate

       private boolean isTimeSubmitted(boolean usesAmpm, String type) {
        	boolean isTimeSubmitted = ! (StringUtils.isEmpty(getHours()) && StringUtils.isEmpty(getMinutes()));
        	if(type.equals("time") || type.equals("full") || type.equals("both"))
        		isTimeSubmitted = isTimeSubmitted || ! StringUtils.isEmpty(getSeconds());
        	if(usesAmpm)
        		isTimeSubmitted = isTimeSubmitted || isAmpmSubmitted();
        	return isTimeSubmitted;
        }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Resolved: (TOMAHAWK-759) When type="both", inputDate does not accept null value

Posted by "Cagatay Civici (JIRA)" <de...@myfaces.apache.org>.
     [ http://issues.apache.org/jira/browse/TOMAHAWK-759?page=all ]

Cagatay Civici resolved TOMAHAWK-759.
-------------------------------------

    Fix Version/s: 1.1.5-SNAPSHOT
       Resolution: Fixed

Fixed by not considering seconds to check for empty submits when type is "both".

> When type="both", inputDate does not accept null value
> ------------------------------------------------------
>
>                 Key: TOMAHAWK-759
>                 URL: http://issues.apache.org/jira/browse/TOMAHAWK-759
>             Project: MyFaces Tomahawk
>          Issue Type: Bug
>          Components: Date
>    Affects Versions: 1.1.5-SNAPSHOT
>         Environment: JDK 1.5.0.07, Tomcat 5.5.17 or Tomcat 5.0.28
>            Reporter: Abhilash Kumar
>         Assigned To: Cagatay Civici
>             Fix For: 1.1.5-SNAPSHOT
>
>
> When the value of the type attribute of the inputDate is "both", it is not accepting null values even if required is not true. This can be easily reproduced using the  Date example of examples webapp of SNAPAHOT-1.1.5. 
> 1. Take the date example - (/date.jsf)
>  2. Enter null value for the third input component ( Where both date and time is to be entered ) and click on update. This will give a validation error saying that the entered date is not valid.
> I have debugged the code and found out that the actual exception is a NumberFormatException from HtmlInputDate.parse(). This happens because the code bypasses the "isSubmitValid()" function where the submitted values are checked for null. The "isTimeSubmitted()" function returns true in the case of type=both. For type==both, only hours and minutes are to be checked (as in the case of short_time) and there is no need of checking the seconds value (which will have value = 0 in the case of type = both). So the fix can be removal of  type.equals("both") from the if condition in the second line of the function.
>  Class -> org.apache.myfaces.custom.date.HtmlInputDate
>        private boolean isTimeSubmitted(boolean usesAmpm, String type) {
>         	boolean isTimeSubmitted = ! (StringUtils.isEmpty(getHours()) && StringUtils.isEmpty(getMinutes()));
>         	if(type.equals("time") || type.equals("full") || type.equals("both"))
>         		isTimeSubmitted = isTimeSubmitted || ! StringUtils.isEmpty(getSeconds());
>         	if(usesAmpm)
>         		isTimeSubmitted = isTimeSubmitted || isAmpmSubmitted();
>         	return isTimeSubmitted;
>         }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira