You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Vijay Balakrishnan <Vi...@MyHealthBank.com> on 2002/11/15 23:00:08 UTC

data not repopulated after validation using ActionForm for dynami c form fields

HI,

I am trying to validate a fully dynamic form populated from the database.The
validation works fine with
an ActionForm with the following properties:
 private String[] fieldIdMemberIds;
    private String questionName;
    private HashMap hashMap = new HashMap();

The problem is repopulating the dynamic field values back from the hashMap
into the dynamic fields.The fields 
in error are getting highlighted properly with a custom tag but the
previously entered data is lost.
Is there a way I can populate back the varying fieldIdMemberId fields from
the hashMap.(how does DynaForm 
populate fields back from just form-property names).

Pls correct me if I am totally offbase here in using reset() here.

Thanx,
Vijay

Here is the relevant code in the ActionForm class:

 
public void reset(ActionMapping mapping, HttpServletRequest request) {

        String[] fieldIDMemberIds = getFieldIdMemberIds();
        if (fieldIdMemberIds != null) {
            for (int i = 0; i < fieldIDMemberIds.length; i++) {
                String fieldIdMemberId = fieldIDMemberIds[i];
                String answer = request.getParameter(fieldIdMemberId);
                if (answer != null && answer.length() > 0) {
                     //TODO:repopulate the dynamic fieldIdMemberId fields
with answers from the hashMap
			???????????????
                }
            }
        }

    }

public ActionErrors validate(ActionMapping mapping, HttpServletRequest
request) {
        boolean validated = true;
        ActionErrors errors = new ActionErrors();
        String[] fieldIDMemberIds = getFieldIdMemberIds();
         if (fieldIdMemberIds != null) {
             for (int i = 0; i < fieldIDMemberIds.length; i++) {
                 String fieldIdMemberId = fieldIDMemberIds[i];
                 String answer = request.getParameter(fieldIdMemberId);
                 if (answer == null || answer.length() < 1) {

                     ActionError newError = new
ActionError("validate.error.required",fieldIdMemberId);
                     errors.add( fieldIdMemberId, newError);

                     // Return back to the previous state
                     validated = false;

                 }  else {

                     hashMap.put(fieldIdMemberId,answer);

                 }
             }
             //set selected answers
             setHashMap(hashMap);
         }
         if (validated) {
            return null;
        }  else {

           return errors;
        }


     }


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>