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)
--
S pozdravem Roman "Dagi" Pichlik
/* http://www.sweb.cz/pichlik/ Blog pro kodery */