Jeste dotazek,
bind volate extra pomoci neceho takovehoto v kazde metode toho multicactioncontrolleru, ze?

           UsersManagerForm umf = new UsersManagerForm();
           try { bind(request, umf); } catch (Exception ex) {}
return new ModelAndView(".securityManager.rolesList", "command", umf);


Roman Pichlík napsal(a):

Nerozumim, pokud bude jeden multiactioncontroller pro CRUD operace jedne beany, pak vam staci jeden validator.

Pokud potrebujete udelat custom validaci, tak bych prekryl metodu bind a udelal to podobne jako to maji fomr controllery.

public class ExtendedMultiActionController extends MultiActionController{

 protected void bind(ServletRequest request, Object command) {
  ServletRequestDataBinder binder = createBinder(request, command);
  binder.bind(request);
  if (this.validators != null) {
  for (int i = 0; i < this.validators.length; i++) {
    if (this.validators[i].supports(command.getClass()))
ValidationUtils.invokeValidator(this.validators[i], command, binder.getErrors());
    }
  }
  onBindAndValidate(request, command, binder.getErrors())
  binder.closeNoCatch();
 }

protected void onBindAndValidate(HttpServletRequest request, Object command, BindException errors) throws Exception{
    //empty default implementation
 }
}

potomek si pak v onBindAndValidate implementuje custom validaci bez validatoru :-).

Je to alespon trochu srozumitlene?

Burdik Petr napsal(a):

Ok,
to vim. Ale problem je ze pokud to budu pouzivat beznym zpusobem, budu potrebovat nekolik validatoru pro ten multiactioncontroller. Krom toho takto bych to mohl standardni cestou vratit i pokud treba dany objekt uz existuje. Tedy si "pridat" chybu az v controlleru. Proste vetsi kontrola nad tim co se deje.

Pri snaze ziskat RequestContext a z nej kolekci Errors jsem ale narazil. Nedari se mi prijit na to jak ji ziskat. Toto je spatne.
import org.springframework.web.servlet.support.RequestContext;
   RequestContext rc = new RequestContext(request);

   Nevim co dat jako parametr
   Errors errors = rc.getErrors("");

Preci toto je spravne misto, pokud uz treba existuje dany user, jak dat ty informace do Errors. Pripadne me napada, ze bychom mohli usetrit jednu tridu navic. Validator. ...

Pet

Roman Pichlík napsal(a):

Burdik Petr napsal(a):

Pekne rano,
od vcerejska se mi nedari vyresit validaci vramci multiActionControlleru. Rad bych aby to byla rucni validace. Problem je ze se mi nedari najit, jak vytvorit a hlavne do view pridat kolekci errors. Upozornuji ze jsem si vedom ze errors je jen interface. Nechce se mi totiz pro kazdou metodu kterou provadim tvorit extra tridu validatoru. Nejvice se chci priblizit tomu jak to ma struts.

Tedy:
1. multiactioncontroller s nejcasteji curl metodami
2. actionform se vsemi formularovymi promennymi
3. metoda / metody pro validaci, podle provadene akce




Errors model by mel zaregiastrovat controller automaticky pokud neprojde request validaci.

V JSPcku se na nej pak staci bindnout pres

<spring:bind path="command">
    <c:forEach items="${status.errorMessages}" var="errorMessage">
        <c:out value="${errorMessage}"/>   </c:forEach>

command je defaultni jmeno command objektu viz http://static.springframework.org/spring/docs/1.2.x/api/org/springframework/web/servlet/mvc/multiaction/MultiActionController.html#getCommandName(java.lang.Object)










Odpovedet emailem