Done.  https://issues.apache.org/jira/browse/TAPESTRY-1972

Thanks for the assistance.

Geoff

On 11/12/2007, at 7:04 AM, Filip S. Adamsen wrote:

Looked at it, still looks like a bug.

I'd add it to JIRA, but you know exactly what's wrong. ;)

-Filip

Filip S. Adamsen skrev:
I would definitely add a JIRA issue then, that sounds very suspicious. Oh, and maybe try the latest 5.0.7 snapshot if you can, but I don't think that'll help. In any case I'll look at it when I get home later today.
-Filip
Geoff Callender skrev:
The plot just thickened...

Although option (a) fixes all TextField components, it has no effect on Select, DateField, checkbox, or expansions. Option (b) fixes it - that surely tells us that this is a bug?!?!?! Option (c) is enough to fix it, too.

BTW I am using T5.0.6.

Thanks,

Geoff


On 10/12/2007, at 9:35 PM, Geoff Callender wrote:

Hi,

Is this a bug? I couldn't find it in JIRA. The user loses the changes they typed into an "input" or "edit" page if an error is recorded by onSuccess() AND the page is dealing with a client persisted object. The page is redisplayed OK, with error, but with the previous values!!!

The user's changes aren't lost if
(a) I move the work that finds the error from onSuccess() into onValidate(); or
(b) I add a simple client-persisted field to the page; or
(c) I replace client persistence with session persistence.

To illustrate the problem, it's just like the example from http://tapestry.apache.org/tapestry5/tapestry-core/guide/validation.html , which contains these excerpts:

   @Persist
   private String _userName;

   private String _password;

   String onSuccess()
   {
       if (!_authenticator.isValid(_userName, _password))
       {
_form.recordError(_passwordField, "Invalid user name or password.");
           return null;
       }

       return "PostLogin";
   }

except that instead of a single field, _userName, I am persisting a whole object, _user:

   @Persist("client")
   private User _user;

and in the template we refer to its fields, eg:

<input t:type="TextField" t:id="firstName" value="user.firstName" ...

If the user types a value into firstName, but the onSuccess() method records an error, then the user loses what they typed.

However, if I add another field to the page then everything works!

           @Persist("client")
   private String _aField;

       <input t:type="TextField" t:id="aField" value="aField" ...

Alternatively, it works if I do either of the other 2 things - use session persistence or move all logic into onValidate().

Anyone else seen this?

Thanks,

Geoff


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

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



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

Reply via email to