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)