On Sat, Sep 19, 2009 at 6:08 PM, Alistair Bush <alistair.b...@gmail.com>wrote:

> Anyone?
>
> > Before I even start on my questions, lets describe a little bit about
> what
> >  i'm doing.
> >
> > Basically my model has a Region and a School.  A School _must_ belong to
> >  one (and only one) Region.  What I am trying to do is create a
> >  RegionPickList.  So that on the School form, you can click a link/image,
> >  have a window pop up, select/search/etc a Region, Click ok and have the
> >  correct information populated on the School form.  I want to do this on
> >  many entities, against many entities e.g. a Region has parent Region (
> in
> >  fact I want to do something similar with "multi-valued" associations ).
> >
> > Now what this looks like at the moment on the form is pretty much
> >
> > <li>
> >         <appfuse:label styleClass="desc" key="school.region"/>
> >         <form:errors path="region" cssClass="fieldError"/>
> >         <input type="hidden" id="regionId" name="regionId"
> > value="${school.region.id}">
> >         <input type="text" id="regionName" class="text medium"
> > disabled="disabled" value="${school.region.name}">
> >         <a
> > href="/regionsPickList.html?valueField=regionId&displayField=regionName"
> > target="_blank">Pick</a>
> >     </li>
> >
> > ugly, but it works so far.
> >
> > Now,  in the controller
> >
> > String regionId = request.getParameter("regionId");
> > if (regionId != null) {
> >       try {
> >                 long id = Long.parseLong(regionId);
> >
> >                 Region r = regionManager.get(id);
> >                 if (r == null) {
> >                       // really should be returning a error here.
> >                       return new ModelAndView();
> >                 }
> >       catch (Exception e) {
> >               //and here
> >       }
> > } else { /* and here */ }
> >
> > Now what I really want to do ( and hopefully this is obvious by now ) is
> > return validation errors.
> >
> > So far I believe there are actually 2 ways I might possibly do this.  One
> >  is call errors.rejectValues which I have played with and failed, the
> other
> >  is to override initBinder and register a binder.
> >
> > In this case,  which would be better to do?
> >
> > In the first case I have been trying to do
> >
> > errors.rejectValue("region", getText("errors.required", "school.region",
> > request.getLocale()));
> > return new ModelAndView().addObject(school);
> >
> > but this never seems to actually work.  Any ideas?
>

If you reset the ModelAndView, the errors get erased. Here's an example from
SignupController:

        } catch (UserExistsException e) {
            errors.rejectValue("username", "errors.existing.user",
                    new Object[]{user.getUsername(), user.getEmail()},
"duplicate user");

            // redisplay the unencrypted passwords
            user.setPassword(user.getConfirmPassword());
            return showForm(request, response, errors);
        }

I believe showForm() is what you're looking for.

Matt


>  >
> > Also it would be nice if I could add the required part of the validation
> to
> > validation.xml.  Is that possible?  Im not really sure when (or what) the
> > validation is run against yet.
> >
> > Does anyone have a nice overall solution to a issue like this.
> >
> > Thanks, I look forward to your thoughts and ideas.
> >
> > Alistair.
> >
> > ps.  Thanks to Matt Raible and everyone else who has created AppFuse.
>  very
> > cool, very well done.
> > pss.  This is my first semi-serious attempt to learn
> >  Servlets/Jsp/Java/Spring MVC/etc/etc.  Please keep that in mind.
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscr...@appfuse.dev.java.net
> > For additional commands, e-mail: users-h...@appfuse.dev.java.net
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@appfuse.dev.java.net
> For additional commands, e-mail: users-h...@appfuse.dev.java.net
>
>

Reply via email to