Client persistence bug - user typing lost
-----------------------------------------
Key: TAPESTRY-1972
URL: https://issues.apache.org/jira/browse/TAPESTRY-1972
Project: Tapestry
Issue Type: Bug
Components: tapestry-core
Affects Versions: 5.0.6
Environment: Safari, OS X, JBoss 4.2.1
Reporter: Geoff Callender
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() -
this fixes all TextField components but does not fix Select, DateField,
checkbox, or expansions; or
(b) I add a simple client-persisted field to the page - remarkably this fixes;
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().
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]