Re: Validation on my own

From: Peter Müller (peter.mueller193..mx.net)
Date: Tue May 03 2011 - 13:40:00 UTC

  • Next message: Kieran Kelleher: "Re: Validation on my own"

    Hello,
    thank you Kieran and Martino for your fast answers.

    I also thought about Martino's solution. But I only want to do this as "last way", because there are more other parts in my software, I'll need that.

    I think, that I'll order the book. I looked at the preview on amazon, and there are a view things, I want to learn.

    But what can I do, until the book reach me? How can I display the messages, Wonder generates for me? At the moment, I have an accessor, which generates an alertMessage-script, which will be displayed, if alertMessage is set.

    public String alertMessageScript() {
                if(alertMessage==null) return null;
                String tmp = alertMessage;
                alertMessage=null;
                return "<script language=\"javascript\" type=\"text/javascript\">"+
                                "alert('" + tmp + "');" +
                                "</script>";

        }

    How can I display the messages, if I want to use the wonder-generated Validation-Messages?

    Thanks
    Peter M.

    -------- Original-Nachricht --------
    > Datum: Tue, 3 May 2011 08:51:53 -0400
    > Von: Kieran Kelleher <kelleher..mail.com>
    > An: woproject-de..bjectstyle.org, "Peter Müller" <peter.mueller1934@gmx.net>
    > Betreff: Re: Validation on my own

    > You can implement custom validation by simply adding validation methods to
    > any class that implements NSValidation interface.
    >
    > You can throw custom 'nice' message from your own Validation method.
    >
    > Also, if you use Wonder, the default messages will be 'nice' and Wonder
    > allows for nice localization too.
    >
    > There is a bit for you to learn, but it will be worth it.
    >
    > So for your user EO, you can add custom validation methods.
    >
    > For example for your password logic below, this would normally be added in
    > the EO class as sth like:
    >
    > public String validatePassword(Object aValue) throws
    > NSValidation.ValidationException {
    > if (aValue == null || aValue.toString().length() < 5) {
    > throw new NSValidation.ValidationException("Password must be
    > set and must contain at least 5 characters.");
    > }
    > return aValue.toString();
    > }
    >
    > Your validate method gets called automatically in takeValuesFromRequest
    > phase of request handling.
    >
    > Your current approach will not work because you are validating in the
    > invokeAction phase which comes after the takeValues phase.
    >
    > There is a book written by a bourbon-loving fairly smart Canuck entitled
    > "Practical WebObjects". Chapter 5 explains Validation in very easy to
    > understand terms. If you read that, you will then know enough to be dangerous.
    > ;-)
    >
    > Regards, Kieran
    >
    >
    > On May 3, 2011, at 8:31 AM, Peter Müller wrote:
    >
    > > Hello WO-Community,
    > > i've a coding-problem because WO does a job for me, I want to do on my
    > own.
    > >
    > > I've a modelclass called "User" with a view fields:
    > > id, firstname, lastname, email, ...
    > >
    > > id is primary key, firstname, lastname and a view others are "required"
    > fields.
    > >
    > > On my component I have a Form to set this fields. The "save"-Button is
    > linked to my method:
    > >
    > > public WOComponent save() {
    > > alertMessage=null;
    > > if(selectedUser.lastname()==null) {
    > > alertMessage="Lastname of user must be set!";
    > > return null;
    > > }
    > > if(selectedUser.firstname()==null) {
    > > alertMessage="Firstname of user must be set!";
    > > return null;
    > > }
    > > if(selectedUser.username()==null) {
    > > alertMessage="Username of user must be set!";
    > > return null;
    > > }
    > > if(selectedUser.password()==null ||
    > selectedUser.password().length()<5) {
    > > alertMessage="Password of user must be set and must contain at least
    > 5 signs.";
    > > return null;
    > > }
    > > session.defaultEditingContext().saveChanges();
    > > selectedUser = null;
    > > return null;
    > > }
    > >
    > > As you can see, I want to do the validation for the fields on my own
    > (because I want to make a "nice" message to the user, and later also
    > multilingual).
    > >
    > > But now the problem: If I click "save" on my component, first the form
    > will be set, and WO validates, if all required fields are set. If not, it
    > will print a message in console and "reset" the fields. My validation will be
    > ignored.
    > >
    > > Have I any chance to validate "required" fields on my own, and ignore
    > WO's validation?
    > >
    > > Thank you very much,
    > > All the best from germany
    > > Peter M.
    > > --
    > > Empfehlen Sie GMX DSL Ihren Freunden und Bekannten und wir
    > > belohnen Sie mit bis zu 50,- Euro! https://freundschaftswerbung.gmx.de
    >

    -- 
    NEU: FreePhone - kostenlos mobil telefonieren und surfen!			
    Jetzt informieren: http://www.gmx.net/de/go/freephone
    



    This archive was generated by hypermail 2.0.0 : Tue May 03 2011 - 13:42:45 UTC