Products
About Guided Tour Online Demo Trial Version Requirements
Resources
Documents Configuration examples TagLib Reference Useful Links
Customer Support
Updates Forums Contact Services
Sales
Licensing Sales FAQ Buy Online
 
 
 
buy online   |   about us   |   german version  

» 6. Validation and error presentation

In our example, the validation of our data is done using the validate()-method in the FormBean. The method is called within the UserEditAction, as soon as the Save button on our form has been clicked. The form can generate a corresponding visual note in front of the field in which an error has occurred. To do so, the error message is set in the ActionErrors-Collection, specifying the corresponding Property. The following validation results in a message "Input required for Field: First Name" and displays a warning signal for the corresponding field if no input has been made there.

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;

public class UserEditForm extends UserDisplayForm {

    /**
     * @see org.apache.struts.action.ActionForm#validate()
     */
    public ActionErrors validate(ActionMapping mapping,
        HttpServletRequest request) {

        ActionErrors errors = new ActionErrors();

        if ("".equals(firstName) ) {
            errors.add("firstName",
                new ActionError(
                   "Input Required for Field: ",
                   "First Name"));
        }

        if ("".equals(lastName) ) {
            errors.add("lastName",
                new ActionError(
                   "Input Required for Field: ",
                   "Last Name"));
        }

        return errors;
    }

}

The validation is triggered in the save-onClick() method. Any errors occuring thereby are set in the FormActionContext. The result of this is that on returning to the input page, the corresponding error messages are displayed.
If the validation was successful, the changes can be accepted in the database. Errors can also occur during this process. Such errors are not displayed in the input screen in our example, but in the screen from which we have come to the editing mode. For this, the error message is also set in the context, and then, the corresponding action is called. The CommonControls Trial Version contains the detailed source code for it. In case of success, a corresponding message is passed to the user. For this, the text is set using the method addGlobalMessage() into theFormActionContext. Then, the input screen is quit again.

import java.io.IOException;
import javax.servlet.ServletException;

import com.cc.framework.adapter.struts.ActionContext;
import com.cc.framework.adapter.struts.FWAction;
import com.cc.framework.adapter.struts.FormActionContext;

public class UserEditAction extends FWAction {

    // other code see above ...

    public void save_onClick(FormActionContext ctx) {

        UserEditForm form = (UserEditForm) ctx.form();

        // Validate the Formdata
        ActionErrors errors = form.validate(ctx.mapping(), ctx.request());
        ctx.addErrors(errors);

        // If there are any Errors return and display a Message
        if (ctx.hasErrors()) {
            ctx.forwardToInput();
            return;
        }

        try {
            // In our Example we get the User-Object
            // from the Session
            User user =
                (User) ctx.session().getAttribute("userobj");
            populateBusinessObject(ctx, user);
            user.update();
        }
        catch (Throwable t) {
            ctx.addGlobalError("Error: ", t);
            ctx.forwardByName(Forwards.BACK);
            return;
        }

        // Generate a Success Message
        ctx.addGlobalMessage(
            "Data updated: ", form.getUserName());
        ctx.forwardByName(Forwards.SUCCESS);
    }

}

back   |   continue

Impressum | This product includes software developed by the Java Apache Project
Tours
ListControl TreeControl TreeListControl TabSetControl Form Tags MenuControl Print version Configuration