Products
About Guided Tour Online Demo Download Trial Version Requirements
Resources
Dokumente Konfigurationsbeispiele TagLib-Referenz Useful Links
Customer Support
Updates Foren Contact Services
Sales
Licensing Sales FAQ Buy Online
 
buy online   |   about us   |   english version  

» 6. Validierung und Fehlerpräsentation

Die Validierung der Daten erfolgt in unserem Beispiel mittels der validate()-Methode in der FormBean. Die Methode wird innerhalb der UserEditAction aufgerufen, sobald der Save-Button auf unserem Formular angeklickt wurde. Das Formular kann vor dem Feld, in dem ein Fehler aufgetreten ist einen entsprechenden visuellen Hinweis generieren. Hierzu wird die Fehlermeldung unter Angabe des entspechenden Properties in die ActionErrors-Collection eingestellt. Die nachfolgende Validierung führt zu der Meldung "Input required for Field: First Name" und zeigt ein Warnzeichen for dem entsprechenden Feld an, wenn dort keine Eingabe erfolgt ist.

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;
    }

}

Die Validierung wird in der save-onClick()-Methode angestoßen. Auftretende Fehler werden dabei in den FormActionContext eingestellt. Dies führt dazu, dass nach einer Rückkehr auf die Eingabeseite die entsprechenden Fehlermeldungen angezeigt werden.
Wenn die Validierung erfolgreich war, können die Änderungen in die Datenbank übernommen werden. Bei diesem Vorgang können ebenfalls Fehler auftreten. Solche Fehler werden in unserem Beispiel nicht in der Eingabemaske angezeigt, sondern in der Maske, von der aus wir in den Bearbeitungsmodus verzweigt sind. Die Fehlermeldung wird dazu ebenfalls in den Kontext eingestellt und dann anschließend die entsprechende Action aufgerufen. Die CommonControls Trail-Version enthält dazu den ausführlichen Source-Code.
Im Erfolgsfall wird eine entsprechende Meldung an den Anwender weitergegeben. Der Text wird hierzu über die Methode addGlobalMessage() in den FormActionContext eingestellt. Anschließend wird die Eingabemaske wieder verlassen.

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);
    }

}

zurück   |   weiter

Impressum | This product includes software developed by the Java Apache Project
Tours
ListControl TreeControl TreeListControl TabSetControl Formelemente MenuControl Druckversion Live Demo Konfiguration