Hi,
The following documentation in ComponentResources is misleading in Tapestry
5.3.2.
/**
* Discards all persistent field changes for the page containing the
component. Changes are eliminated from
* persistent storage (such as the {@link
org.apache.tapestry5.services.Session}) which will take effect in the
* <em>next</em> request (the attached page instance is not affected).
*/
void discardPersistentFieldChanges();
Previously (5.2.6), it behaved as documented, but now (I think) changes to the
PersistWorker mean that ComponentResources is called when the field is
accessed, not just when it is set:
public Object get(Object instance, InstanceContext context)
{
if (!fieldValue.exists())
{
Object persistedValue = resources.hasFieldChange(name) ?
resources.getFieldChange(name) : defaultValue;
fieldValue.set(persistedValue);
}
return fieldValue.get();
}
This means that calling discardPersistentFieldChanges() before accessing the
persisted fields results in them not being there - "the attached page instance
is not affected".
Luke