Example usage for org.springframework.web.bind WebDataBinder getTarget

List of usage examples for org.springframework.web.bind WebDataBinder getTarget

Introduction

In this page you can find the example usage for org.springframework.web.bind WebDataBinder getTarget.

Prototype

@Nullable
public Object getTarget() 

Source Link

Document

Return the wrapped target object.

Usage

From source file:cz.muni.fi.mvc.controllers.StewardController.java

@InitBinder
protected void initBinder(WebDataBinder binder) {
    CustomDateFormater dateFormat = new CustomDateFormater("yyyy-MM-dd");
    dateFormat.setLenient(false);// w ww. j  a  va  2 s  . c  om
    binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
    if (binder.getTarget() instanceof StewardCreationalDTO) {
        binder.addValidators(new StewardCreationalDTOValidator(stewardFacade));
    }

    if (binder.getTarget() instanceof UpdateStewardDTO) {
        binder.addValidators(new StewardUpdateDTOValidator(stewardFacade));
    }
}

From source file:edu.mayo.cts2.framework.webapp.rest.controller.AbstractController.java

@InitBinder
public void initPageBinder(WebDataBinder binder,
        @RequestParam(value = PARAM_MAXTORETURN, required = false) Integer maxToReturn,
        @RequestParam(value = PARAM_PAGE, required = false) Integer pageNumber) {

    if (binder.getTarget() instanceof Page) {
        Page page = (Page) binder.getTarget();

        if (maxToReturn != null) {
            page.setMaxToReturn(maxToReturn);
        } else {//from ww w  .  java  2 s.com
            // get default page size if it is not null in the properties file
            if (getRestConfig().getMaxToReturn() != null) {
                page.setMaxToReturn(getRestConfig().getMaxToReturn().intValue());
            }
        }

        if (pageNumber != null) {
            page.setPage(pageNumber);
        }

    }
}

From source file:org.zht.framework.web.bind.resolver.FormModelMethodArgumentResolver.java

/**
 * Resolve the argument from the model or if not found instantiate it with
 * its default if it is available. The model attribute is then populated
 * with request values via data binding and optionally validated
 * if {@code @java.validation.Valid} is present on the argument.
 *
 * @throws org.springframework.validation.BindException
 *                   if data binding and validation result in an error
 *                   and the next method parameter is not of type {@link org.springframework.validation.Errors}.
 * @throws Exception if WebDataBinder initialization fails.
 *///from   ww  w .j a  v a2s .com
public final Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
        NativeWebRequest request, WebDataBinderFactory binderFactory) throws Exception {
    String name = parameter.getParameterAnnotation(FormModel.class).value();

    Object target = (mavContainer.containsAttribute(name)) ? mavContainer.getModel().get(name)
            : createAttribute(name, parameter, binderFactory, request);

    WebDataBinder binder = binderFactory.createBinder(request, target, name);
    target = binder.getTarget();
    if (target != null) {
        bindRequestParameters(mavContainer, binderFactory, binder, request, parameter);

        validateIfApplicable(binder, parameter);
        if (binder.getBindingResult().hasErrors()) {
            List<BindingResult> list = (List<BindingResult>) request
                    .getAttribute(ValidateConstant.BINDING_RESULT_LIST_NAME, Integer.MAX_VALUE / 2 + 1);
            if (null == list) {
                list = new ArrayList<BindingResult>();
                request.setAttribute(ValidateConstant.BINDING_RESULT_LIST_NAME, list, 0);
            }
            list.add(binder.getBindingResult());
            request.setAttribute(ValidateConstant.BINDING_RESULT_HAS_ERROR, true, 0);
            //                if (isBindExceptionRequired(binder, parameter)) {
            //                    throw new BindException(binder.getBindingResult());
            //                }
        }
    }

    target = binder.convertIfNecessary(binder.getTarget(), parameter.getParameterType());
    mavContainer.addAttribute(name, target);

    return target;
}

From source file:edu.mayo.cts2.framework.webapp.rest.controller.AbstractController.java

@InitBinder
public void initEntityDescriptionRestrictionBinder(WebDataBinder binder,
        @RequestParam(value = PARAM_FILTERCOMPONENT, required = false) String filterComponent,
        @RequestParam(value = PARAM_MATCHALGORITHM, required = false) String matchAlgorithm,
        @RequestParam(value = PARAM_MATCHVALUE, required = false) String matchValue) {

    if (binder.getTarget() instanceof RestFilters) {
        RestFilters filters = (RestFilters) binder.getTarget();

        if (StringUtils.isNotBlank(matchValue)) {
            RestFilter filter = new RestFilter();
            if (StringUtils.isNotBlank(filterComponent)) {
                filter.setFiltercomponent(filterComponent);
            }/*ww  w  .  j  a v  a  2  s. c o m*/
            if (StringUtils.isNotBlank(matchAlgorithm)) {
                filter.setMatchalgorithm(matchAlgorithm);
            }
            filter.setMatchvalue(matchValue);

            filters.getRestFilters().add(filter);
        }
    }
}

From source file:edu.mayo.cts2.framework.webapp.rest.controller.CodeSystemVersionController.java

@InitBinder
public void initCodeSystemRestrictionBinder(WebDataBinder binder,
        @RequestParam(value = PARAM_ENTITY, required = false) List<String> entity,
        @RequestParam(value = PARAM_CODESYSTEM, required = false) String codesystem) {

    if (binder.getTarget() instanceof CodeSystemVersionQueryServiceRestrictions) {
        CodeSystemVersionQueryServiceRestrictions restrictions = (CodeSystemVersionQueryServiceRestrictions) binder
                .getTarget();//from   ww  w  . j av  a  2  s .  c o m

        if (StringUtils.isNotEmpty(codesystem)) {
            restrictions.setCodeSystem(ModelUtils.nameOrUriFromEither(codesystem));
        }

        if (CollectionUtils.isNotEmpty(entity)) {
            restrictions.setEntityRestriction(new EntityRestriction());

            restrictions.getEntityRestriction().setEntities(ControllerUtils.idsToEntityNameOrUriSet(entity));
        }
    }
}

From source file:com.fengduo.bee.commons.component.FormModelMethodArgumentResolver.java

/**
 * Resolve the argument from the model or if not found instantiate it with its default if it is available. The model
 * attribute is then populated with request values via data binding and optionally validated if
 * {@code @java.validation.Valid} is present on the argument.
 * //from  ww  w .  j  a  v a  2s.c om
 * @throws org.springframework.validation.BindException if data binding and validation result in an error and the
 * next method parameter is not of type {@link org.springframework.validation.Errors}.
 * @throws Exception if WebDataBinder initialization fails.
 */
public final Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
        NativeWebRequest request, WebDataBinderFactory binderFactory) throws Exception {
    String name = parameter.getParameterAnnotation(FormBean.class).value();

    Object target = (mavContainer.containsAttribute(name)) ? mavContainer.getModel().get(name)
            : createAttribute(name, parameter, binderFactory, request);

    WebDataBinder binder = binderFactory.createBinder(request, target, name);
    target = binder.getTarget();
    if (target != null) {
        bindRequestParameters(mavContainer, binderFactory, binder, request, parameter);

        validateIfApplicable(binder, parameter);
        if (binder.getBindingResult().hasErrors()) {
            if (isBindExceptionRequired(binder, parameter)) {
                throw new BindException(binder.getBindingResult());
            }
        }
    }

    target = binder.convertIfNecessary(binder.getTarget(), parameter.getParameterType());
    mavContainer.addAttribute(name, target);

    return target;
}

From source file:org.opentides.web.controller.BaseCrudController.java

/**
 * Method that attaches the autowired form validator to the binder
 * /*from   w  w w . j a va 2 s  . com*/
 * @param binder
 */
@InitBinder
protected void attachValidator(WebDataBinder binder) throws Exception {
    if ((formValidator != null) && (binder.getTarget() != null)
            && formValidator.supports(binder.getTarget().getClass()))
        binder.setValidator(formValidator);
}

From source file:com.fengduo.bee.commons.component.FormModelMethodArgumentResolver.java

protected void validateComponent(WebDataBinder binder, MethodParameter parameter) throws BindException {

    boolean validateParameter = validateParameter(parameter);
    Annotation[] annotations = binder.getTarget().getClass().getAnnotations();
    for (Annotation annot : annotations) {
        if (annot.annotationType().getSimpleName().startsWith("Valid") && validateParameter) {
            Object hints = AnnotationUtils.getValue(annot);
            binder.validate(hints instanceof Object[] ? (Object[]) hints : new Object[] { hints });
        }//from w  w  w  . j a  va  2s.co m
    }

    if (binder.getBindingResult().hasErrors()) {
        if (isBindExceptionRequired(binder, parameter)) {
            throw new BindException(binder.getBindingResult());
        }
    }
}

From source file:org.zht.framework.web.bind.resolver.FormModelMethodArgumentResolver.java

/**
 * {@inheritDoc}/* www  .  j a  v a2  s.  co  m*/
 * <p>Downcast {@link org.springframework.web.bind.WebDataBinder} to {@link org.springframework.web.bind.ServletRequestDataBinder} before binding.
 *
 * @throws Exception
 * @see org.springframework.web.servlet.mvc.method.annotation.ServletRequestDataBinderFactory
 */

protected void bindRequestParameters(ModelAndViewContainer mavContainer, WebDataBinderFactory binderFactory,
        WebDataBinder binder, NativeWebRequest request, MethodParameter parameter) throws Exception {

    Map<String, Boolean> hasProcessedPrefixMap = new HashMap<String, Boolean>();

    Class<?> targetType = binder.getTarget().getClass();
    ServletRequest servletRequest = prepareServletRequest(binder.getTarget(), request, parameter);
    WebDataBinder simpleBinder = binderFactory.createBinder(request, null, null);

    if (Collection.class.isAssignableFrom(targetType)) {//bind collection or array

        Type type = parameter.getGenericParameterType();
        Class<?> componentType = Object.class;

        Collection target = (Collection) binder.getTarget();

        List targetList = new ArrayList(target);

        if (type instanceof ParameterizedType) {
            componentType = (Class<?>) ((ParameterizedType) type).getActualTypeArguments()[0];
        }

        if (parameter.getParameterType().isArray()) {
            componentType = parameter.getParameterType().getComponentType();
        }

        for (Object key : servletRequest.getParameterMap().keySet()) {
            String prefixName = getPrefixName((String) key);

            //?prefix ??
            if (hasProcessedPrefixMap.containsKey(prefixName)) {
                continue;
            } else {
                hasProcessedPrefixMap.put(prefixName, Boolean.TRUE);
            }

            if (isSimpleComponent(prefixName)) { //bind simple type
                Map<String, Object> paramValues = WebUtils.getParametersStartingWith(servletRequest,
                        prefixName);
                Matcher matcher = INDEX_PATTERN.matcher(prefixName);
                if (!matcher.matches()) { //? array=1&array=2
                    for (Object value : paramValues.values()) {
                        targetList.add(simpleBinder.convertIfNecessary(value, componentType));
                    }
                } else { //? array[0]=1&array[1]=2
                    int index = Integer.valueOf(matcher.group(1));

                    if (targetList.size() <= index) {
                        growCollectionIfNecessary(targetList, index);
                    }
                    targetList.set(index, simpleBinder.convertIfNecessary(paramValues.values(), componentType));
                }
            } else { //? votes[1].title=votes[1].title&votes[0].title=votes[0].title&votes[0].id=0&votes[1].id=1
                Object component = null;
                //? ?????
                Matcher matcher = INDEX_PATTERN.matcher(prefixName);
                if (!matcher.matches()) {
                    throw new IllegalArgumentException("bind collection error, need integer index, key:" + key);
                }
                int index = Integer.valueOf(matcher.group(1));
                if (targetList.size() <= index) {
                    growCollectionIfNecessary(targetList, index);
                }
                Iterator iterator = targetList.iterator();
                for (int i = 0; i < index; i++) {
                    iterator.next();
                }
                component = iterator.next();

                if (component == null) {
                    component = BeanUtils.instantiate(componentType);
                }

                WebDataBinder componentBinder = binderFactory.createBinder(request, component, null);
                component = componentBinder.getTarget();

                if (component != null) {
                    ServletRequestParameterPropertyValues pvs = new ServletRequestParameterPropertyValues(
                            servletRequest, prefixName, "");
                    componentBinder.bind(pvs);
                    validateIfApplicable(componentBinder, parameter);
                    if (componentBinder.getBindingResult().hasErrors()) {
                        if (isBindExceptionRequired(componentBinder, parameter)) {
                            throw new BindException(componentBinder.getBindingResult());
                        }
                    }
                    targetList.set(index, component);
                }
            }
            target.clear();
            target.addAll(targetList);
        }
    } else if (MapWapper.class.isAssignableFrom(targetType)) {

        Type type = parameter.getGenericParameterType();
        Class<?> keyType = Object.class;
        Class<?> valueType = Object.class;

        if (type instanceof ParameterizedType) {
            keyType = (Class<?>) ((ParameterizedType) type).getActualTypeArguments()[0];
            valueType = (Class<?>) ((ParameterizedType) type).getActualTypeArguments()[1];
        }

        MapWapper mapWapper = ((MapWapper) binder.getTarget());
        Map target = mapWapper.getInnerMap();
        if (target == null) {
            target = new HashMap();
            mapWapper.setInnerMap(target);
        }

        for (Object key : servletRequest.getParameterMap().keySet()) {
            String prefixName = getPrefixName((String) key);

            //?prefix ??
            if (hasProcessedPrefixMap.containsKey(prefixName)) {
                continue;
            } else {
                hasProcessedPrefixMap.put(prefixName, Boolean.TRUE);
            }

            Object keyValue = simpleBinder.convertIfNecessary(getMapKey(prefixName), keyType);

            if (isSimpleComponent(prefixName)) { //bind simple type
                Map<String, Object> paramValues = WebUtils.getParametersStartingWith(servletRequest,
                        prefixName);

                for (Object value : paramValues.values()) {
                    target.put(keyValue, simpleBinder.convertIfNecessary(value, valueType));
                }
            } else {

                Object component = target.get(keyValue);
                if (component == null) {
                    component = BeanUtils.instantiate(valueType);
                }

                WebDataBinder componentBinder = binderFactory.createBinder(request, component, null);
                component = componentBinder.getTarget();

                if (component != null) {
                    ServletRequestParameterPropertyValues pvs = new ServletRequestParameterPropertyValues(
                            servletRequest, prefixName, "");
                    componentBinder.bind(pvs);

                    validateComponent(componentBinder, parameter);

                    target.put(keyValue, component);
                }
            }
        }
    } else {//bind model
        ServletRequestDataBinder servletBinder = (ServletRequestDataBinder) binder;
        servletBinder.bind(servletRequest);
    }
}