No.  Maybe on Monday.

john mcnally

Rodney Schneider wrote:
> 
> Hi John,
> 
> Any luck investigating this problem?
> 
> Thanks,
> 
> -- Rodney
> 
> On Tue, 26 Mar 2002 04:23, you wrote:
> 
> > I think removing the conditional that you suggest will have other
> > repercussions.  I will look further at this, but it will probably be a
> > few days.
> >
> > john mcnally
> >
> > Rodney Schneider wrote:
> > > Hi Edmund and John!
> > >
> > > I have sent two emails to this list regarding this bug in Intake and
> > > no-one has replied yet :(  It exists in both the most recent Turbine 2.2
> > > code and the most recent CVS version of Fulcrum.
> > >
> > > I'll try to explain myself a bit better this time as maybe the bug report
> > > I sent wasn't clear.  See this message...
> > >
> > > http://www.mail-archive.com/[email protected]/msg06959.html
> > >
> > > > > > I have got a problem with the rules for checking field values in
> > > > > > intake. Somehow I cannot check for empty fields. I define the rule
> > > > > > as explained in the docs like this:
> > > > > >
> > > > > > ..
> > > > > > <field name="PersonName" key="personname" type="String">
> > > > > >     <rule name="minLength" value="1">Bitte geben Sie den Nachnamen
> > > > > > an.</rule> </field>
> > > > > > ..
> > > > > >
> > > > > > When I leave the field empty, intake does not report an error.
> > > > > > (isAllValid() still returns true)
> > > > >
> > > > > not sure why this does not work.
> > >
> > > If a browser submits a form with an empty text field (with, say, the
> > > parameter name="foo"), then the request parameters will come in in the
> > > form "?foo=&bar=..." etc., and both javax.servlet.HttpServletRequest and
> > > org.apache.turbine.util.ParameterParser will report that the parameter
> > > "foo" is present with the value "" (the empty string).  However,
> > > org.apache.turbine.services.intake.model.Field will treat this field as
> > > if it is not present at all: specifically, in the method validate() is
> > > the following code:
> > >
> > >             stringValue = pp.getString(getKey());
> > >             if ( stringValue.length() == 0 )
> > >             {
> > >                 set_flag = false;
> > >             }
> > >
> > > Thus, there is no way to distinguish between an empty field and a field
> > > that is not present in the HTML form at all.
> > >
> > > I am happy to generate a patch that removes the above check, but I am not
> > > sure if this will affect the rest of the Intake code...
> > >
> > > > > > I have experimented a bit with intake, and other rules actually do
> > > > > > work as expected, if the field value is not empty. It seems the
> > > > > > rules simply bypassed for empty fields and no checks are applied.
> > > > > > So I also tried setting the required messsage:
> > > > > >
> > > > > > ..
> > > > > > <field name="PersonName" key="personname" type="String">
> > > > > >   <required-message>Bitte geben Sie den Nachnamen
> > > > > > an.</required-message> </field>
> > > > > > ..
> > > > > >
> > > > > > Again, no error when I leave the field empty. Is this a bug in the
> > > > > > intake service (included in TDK 2.1 release) or am I doing
> > > > > > something wrong?
> > >
> > > See above.
> > >
> > > > > <required-message> is to provide a message that is to be displayed if
> > > > > the field is declared as required and the field is empty.  It does
> > > > > not make the field required.
> > > > >
> > > > > <rule name="required" value="true">Bitte geben Sie den Nachnamen
> > > > > an.</rule>
> > > > >
> > > > > should work, though i have not looked at what's in 2.1 for a while.
> > > >
> > > > Thanks for the quick reply. That rule actually does seem to work
> > > > (though I cannot find anything about a rule with name "required" in the
> > > > intake docs at
> > > > http://jakarta.apache.org/turbine/turbine-2/services/intake-service.htm
> > > >l).
> > >
> > > The "required" rule does work, but this doesn't help in all situations.
> > > One simple example is an "Edit User Profile" form which contains an
> > > "Email Address" field that is not required and a "Work Phone Number"
> > > field that is required.  When a user first registers, they type in a
> > > valid email address in the "Email Address" field and their current work
> > > phone number in the "Work Phone Number" field.  Then they change jobs, so
> > > they go to the Edit User Profile page, empty the email address field,
> > > edit the work phone number field (but accidentally type a 'abc' instead
> > > of a valid number) and submit the form.  Intake finds the the Work Phone
> > > Number field is invalid so it redisplays the page containing the form
> > > with the appropriate error message. HERE IS THE PROBLEM....  the email
> > > address field is pre-populated with the old email address even though the
> > > user had previously emptied it!!
> > >
> > > This happens because Intake doesn't disinguish empty fields from fields
> > > that are not present in the form at all.  See my other email for more
> > > information.
> > >
> > > > A bit odd is, that the isAllValid() method still returns true, but
> > > > lateron when I try to assign the fields to the proper data object
> > > > (using the group.setProperties() method) an exception is thrown
> > > > (message: "Attempted to assign an invalid input").
> > > >
> > > > Maybe I can figure out another way to check the field validity (either
> > > > that, or I will have to watch for that exception).
> > >
> > > I think the abovementioned code should be removed from
> > > org.apache.turbine.services.intake.model.Field and
> > > org.apache.fulcrum.intake.model.Field but, again, I am not sure whether
> > > other code in Intake relies on the above check or whether existing
> > > applications that use Intake will be affected.
> > >
> > > If you want me to submit a patch, please let me know.
> > >
> > > Thanks,
> > >
> > > -- Rodney
> 
> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to