S2StrutsでValidateエラーの表示タイミングを制御する

S2StrutsでPOJOなActionを作った場合、validatorでのエラー表示とActionでのエラー表示を同じタイミングで出すことはデフォルトではできません。

actionのPOJOをあきらめてValidatorFormをextendすると以下の様にaction内でmessegeを取得できるようです。

ActionMapping mapping =(ActionMapping)getRequest().getAttribute(Globals.MAPPING_KEY);
ActionMessages errors = orderForm.validate(mapping,getRequest());
MessageManager.addErrors(errors);
MessageManager.saveErrors();
if(!MessageManager.getErrors().isEmpty()){
return FAILED;
}

でもextendしてとれるなら、無理矢理とれるんじゃないかと言うことでValidatorFormをextendしない場合でも以下のようにすれば取得できます。


ActionMapping mapping = (ActionMapping) request.getAttribute(Globals.MAPPING_KEY);
mapping.setValidate(true);
BeanValidatorForm o = (BeanValidatorForm) this.request.getAttribute("フォームの名前");
ActionErrors errors = o.validate(mapping,request);
MessageManager.addErrors(errors);
MessageManager.saveErrors();

via [Seasar-user:933] [S2Struts] validateのエラー表示のタイミングについて