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

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

Introduction

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

Prototype

public void setAutoGrowNestedPaths(boolean autoGrowNestedPaths) 

Source Link

Document

Set whether this binder should attempt to "auto-grow" a nested path that contains a null value.

Usage

From source file:net.solarnetwork.central.dras.web.UserController.java

/**
 * Setup support for Joda date/times.//from w  w w  . j ava 2 s .  c  o m
 * @param binder
 */
@InitBinder
public void initBinder(WebDataBinder binder) {
    // we turn OFF autoGrowNestedPaths, so we can make use of interfaces as collection types
    // e.g. List<SortDescriptor> which does not work with autoGrowNestedPaths
    binder.setAutoGrowNestedPaths(false);
}

From source file:org.gvnix.web.json.DataBinderMappingJackson2HttpMessageConverter.java

/**
 * Before call to {@link ObjectMapper#readValue(java.io.InputStream, Class)}
 * creates a {@link ServletRequestDataBinder} and put it to current Thread
 * in order to be used by the {@link DataBinderDeserializer}.
 * <p/>// w w  w . j  ava2s .co  m
 * Ref: <a href=
 * "http://java.dzone.com/articles/java-thread-local-%E2%80%93-how-use">When
 * to use Thread Local?</a>
 * 
 * @param javaType
 * @param inputMessage
 * @return
 */
private Object readJavaType(JavaType javaType, HttpInputMessage inputMessage) {
    try {
        Object target = null;
        String objectName = null;

        // CRear el DataBinder con un target object en funcion del javaType,
        // ponerlo en el thread local
        Class<?> clazz = javaType.getRawClass();
        if (Collection.class.isAssignableFrom(clazz)) {
            Class<?> contentClazz = javaType.getContentType().getRawClass();
            target = new DataBinderList<Object>(contentClazz);
            objectName = "list";
        } else if (Map.class.isAssignableFrom(clazz)) {
            // TODO Class<?> contentClazz =
            // javaType.getContentType().getRawClass();
            target = CollectionFactory.createMap(clazz, 0);
            objectName = "map";
        } else {
            target = BeanUtils.instantiateClass(clazz);
            objectName = "bean";
        }

        WebDataBinder binder = new ServletRequestDataBinder(target, objectName);
        binder.setConversionService(this.conversionService);
        binder.setAutoGrowNestedPaths(true);
        binder.setValidator(validator);

        ThreadLocalUtil.setThreadVariable(BindingResult.MODEL_KEY_PREFIX.concat("JSON_DataBinder"), binder);

        Object value = getObjectMapper().readValue(inputMessage.getBody(), javaType);

        return value;
    } catch (IOException ex) {
        throw new HttpMessageNotReadableException("Could not read JSON: ".concat(ex.getMessage()), ex);
    }
}

From source file:net.solarnetwork.central.dras.web.DRASOperatorController.java

/**
 * Setup support for Joda date/times.//from w ww .ja  v a2 s.c o  m
 * @param binder
 */
@InitBinder
public void initBinder(WebDataBinder binder) {
    // we turn OFF autoGrowNestedPaths, so we can make use of interfaces as collection types
    // e.g. List<NodeIdentity> which does not work with autoGrowNestedPaths
    binder.setAutoGrowNestedPaths(false);
    binder.registerCustomEditor(Period.class, new JodaPeriodFormatEditor());
    binder.registerCustomEditor(Duration.class, new JodaDurationEditor());
    binder.registerCustomEditor(DateTime.class,
            new JodaDateFormatEditor(DATE_TIME_FORMAT, TimeZone.getTimeZone("UTC")));
}