When I implement the ModelDriven interface in my Struts2 actions; I follow your typical prepare() method as follows:
public void prepare() throws Exception { if(id != null) { model = service.create(/* some parameters */); } else { model = service.lookupById(id); } } When a user first displays lets say the data-entry form; the create() method will query the system for data based on the arguments passed to the create() action call; pre-populate the model accordingly and then display the data entry form for the user. When the user hits the 'save' button to call the save() method; again the prepare() method is invoked, the model is re-initialized; the interceptor stack populates the model with the parameters from the form. If a field is defined as a Long and a user happened to enter "xyz" as the value in the form; then the default stack will add a field error for that field to the error maps because xyz cannot be converted to a Long; however, because validation happens after prepare(); the value in this field has be reset back to its initial value. So when this error condition is met and the user redirected back to the INPUT form; the field where they had entered "xyz" is now the original default initialized value. I am assuming there is no clean way to prevent this because ultimately you cannot store "xyz" in a field meant to hold a Long value for when the form is redrawn unless all fields are treated as Strings in the action and then copied/mapped to the domain object after validation fires. How are others coping with this? Do you just allow the field to either default back to null or restore its state back to the original initialized value when a user enters data into a field that triggers a conversion problem? --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org