myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David Chandler (JIRA)" <...@myfaces.apache.org>
Subject [jira] Commented: (MYFACES-1467) Validation doesn't run for required fields if submitted value is null
Date Fri, 12 Jan 2007 06:58:27 GMT

    [ https://issues.apache.org/jira/browse/MYFACES-1467?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12464106
] 

David Chandler commented on MYFACES-1467:
-----------------------------------------

Cristi,

Good catch. Just to clarify, you're saying what's broken is that you can no longer use required="true"
and disabled="true" together, correct? I'm actually surprised this ever worked, as these two
attributes would seem in conflict with each other. Conceptually, if an input component is
disabled, validation can be skipped, so the conditions could be added; however, the spec does
not exempt validation from occurring in the case of disabled or readonly, whereas it explicitly
states that required="true" with a null value should result in an error. Therefore, a strict
reading of the spec would seem to indicate that required="true" and disabled="true" should
in fact result in a validation error because required="true" implicitly takes precedence.

Having said that, I'm OK with adding conditions to skip validation for disabled or readonly
components even when required="true", as this was the de facto behavior before this fix.

I understand now how a submitted value of null is "special." Rather than put in explicit checks
to call validation only when a field is editable (not disabled or readonly), the current code
relies on the fact that the submitted value is null in these cases, and therefore validation
is skipped. Whether this was by design or by accident, I wonder. Interestingly, UIInput.processValidators()
method skips validation if the component is not rendered. Perhaps we should add checks for
disabled and readonly in the same method, as validate() needn't even be called if these attributes
are true.

I guess it all depends on how strictly we interpret the spec regarding the required attribute.
As for where we put the conditions, that depends on whether it ever possible for a disabled
or readonly component to have a non-null submitted value. Does anyone know?

/dmc

> Validation doesn't run for required fields if submitted value is null
> ---------------------------------------------------------------------
>
>                 Key: MYFACES-1467
>                 URL: https://issues.apache.org/jira/browse/MYFACES-1467
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: General
>    Affects Versions: 1.1.5-SNAPSHOT, 1.2.0-SNAPSHOT
>            Reporter: David Chandler
>         Assigned To: Matthias We├čendorf
>             Fix For: 1.1.5-SNAPSHOT
>
>         Attachments: patch.txt
>
>
> A component with a required value will not fail validation as expected if the submitted
value is null. This issue is not seen normally because browsers send the value for an empty
text field as an empty string. That is, the POST data for an empty field1 will contain the
field name but no value, like field1=&field2=something. However, if you use a man-in-the-middle
proxy such as Paros to remove "fieldname=" from the POST data, the submitted value will be
null. UIInput.validate() skips validation for null submitted values, but since requiredness
is also part of validation, the requiredness check gets skipped, too.

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

       

Mime
View raw message