[S2Struts] HttpServletRequestから値が取得できない

の対応だけど、下みたいにしようかなーっと思ってます。
multipartのときは2度populateすることにあるけど、他に良い方法が思いつかなくて。

public class PopulateProcessorImpl implements PopulateProcessor {

    public void processPopulate(HttpServletRequest request, HttpServletResponse response,
            ActionForm form, ActionMapping mapping, ExternalRequestProcessor requestProcessor)
            throws ServletException {

        if (request instanceof MultipartRequestWrapper) {
            requestProcessor.processPopulate(request, response, form, mapping);
            Map parameters = getCheckBoxParameters(request);
            if (!parameters.isEmpty()) {
                S2ServletRequestWrapper s2request = new S2ServletRequestWrapper(
                        ((MultipartRequestWrapper) request).getRequest());
                addParameter(s2request, parameters);
                request = new MultipartRequestWrapper(s2request);
                requestProcessor.processPopulate(request, response, form, mapping);
            }
        } else {
            Map parameters = getCheckBoxParameters(request);
            if (!parameters.isEmpty()) {
                S2ServletRequestWrapper s2request = new S2ServletRequestWrapper(request);
                addParameter(s2request, parameters);
                request = s2request;
            }
            requestProcessor.processPopulate(request, response, form, mapping);
        }
    }

    private Map getCheckBoxParameters(HttpServletRequest request) {
        Map result = new HashMap();
        for (Iterator i = request.getParameterMap().keySet().iterator(); i.hasNext();) {
            String paramName = (String) i.next();
            if (paramName.startsWith(Constants.CHECKBOX_NAME)) {
                String checkboxParamName = paramName.substring(Constants.CHECKBOX_NAME.length());
                String checkboxValue = request.getParameter(checkboxParamName);
                if (checkboxValue == null) {
                    result.put(checkboxParamName, Boolean.FALSE.toString());
                }
            }
        }
        return result;
    }

    private void addParameter(S2ServletRequestWrapper request, Map parameters) {
        for (Iterator i = parameters.entrySet().iterator(); i.hasNext();) {
            Map.Entry parameter = (Map.Entry) i.next();
            request.addParameterValue((String) parameter.getKey(), (String) parameter.getValue());
        }
    }

}