ActionFormをPOJOにて

POJOをActionFormとして使ってみたのはいいけれど、Viewで値を取り出そうとしたら実はBeanValidatorFormなので全然駄目だった…POJOActionだったのでリクエストが触れずAction実行後にAOPを使ってリクエストにPOJOインスタンスに戻して突っ込むことにした。


s2struts.dicon


    
      
    

・インタセプタをMeasureTimeInterceptorを真似て作成

public class PojoBeanInjectInterceptor implements MethodInterceptor {
    public Object invoke(MethodInvocation invocation) throws Throwable {
        Object ret = invocation.proceed();
        
        Object[] args = invocation.getArguments();
        HttpServletRequest request = (HttpServletRequest) args[0];
        String formBean = *1;
        }
        
        return ret;
    }
}

とりあえず希望通りに動いたのでよしとしよう(実はこんなことしなくてもよかったりして)

*1:ActionMapping) args[4]).getName(); Object result = request.getAttribute(formBean); if (result instanceof BeanValidatorForm) { request.setAttribute(formBean, ((WrapDynaBean) (((BeanValidatorForm) result).getInstance())).getInstance(