Example usage for org.springframework.web.bind ServletRequestDataBinder bind

List of usage examples for org.springframework.web.bind ServletRequestDataBinder bind

Introduction

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

Prototype

public void bind(ServletRequest request) 

Source Link

Document

Bind the parameters of the given request to this binder's target, also binding multipart files in case of a multipart request.

Usage

From source file:no.abmu.abmstatistikk.web.AbstractOrganisationBrowsingController.java

/**
 * Browse sets up and handles pageHolder browsing of organisationUnits.
 * //  w  ww.  ja v  a 2  s.  com
 * @param request current HTTP request
 * @param attribute in current  HttpSession
 * @param finderBean specifies which organisationUnits to browse
 * @param viewName name of the View to render, to be resolved
 * by the DispatcherServlet's ViewResolver
 * @return ModelAndView holder for both Model and View in 
 * the web MVC framework to be resolved by a DispatcherServlet.
 */
private ModelAndView browse(HttpServletRequest request, String attribute,
        OrgUnitFinderSpecificationBean finderBean, String viewName) {

    PageHolder pageHolder = (PageHolder) request.getSession(true).getAttribute(attribute);

    if (null == pageHolder) {

        pageHolder = browseOrganisationRegisterService.createNewPageHolder(finderBean);

        if (viewName.equals("kkdBrowseReportingMuseumView")) {
            pageHolder.setCurrentPageSize(pageHolder.getNrOfElements());
            pageHolder.getSort().setProperty("countyNumberAndOrganisationUnitName");
        }
        request.getSession().setAttribute(attribute, pageHolder);
    }
    ServletRequestDataBinder binder = new ServletRequestDataBinder(pageHolder, "pageHolder");
    binder.bind(request);
    pageHolder.reload(false);

    return new ModelAndView(viewName, binder.getBindingResult().getModel());
}

From source file:no.abmu.abmstatistikk.web.AbstractOrganisationBrowsingController.java

/**
 * Browse children.//from  ww w  .j  av  a 2 s . c  om
 * 
 * @param request current HTTP request
 * @param attribute in current HttpSession
 * @param parentOrganisationUnitId
 * @param viewName name of the View to render, to be resolved
 * by the DispatcherServlet's ViewResolver
 * @return ModelAndView holder for both Model and View in 
 * the web MVC framework to be resolved by a DispatcherServlet.
 */
private ModelAndView browseChildren(HttpServletRequest request, String attribute, Long parentOrganisationUnitId,
        String viewName) {

    PageHolderOrganisationUnitImpl pageHolder = (PageHolderOrganisationUnitImpl) request.getSession(true)
            .getAttribute(attribute);

    if (null == pageHolder || parentOrganisationUnitId != pageHolder.getWorkingFromOrgUnitId()) {

        pageHolder = browseOrganisationRegisterService
                .createNewPageHolderWithChildren(parentOrganisationUnitId);

        request.getSession().setAttribute(attribute, pageHolder);
    }
    ServletRequestDataBinder binder = new ServletRequestDataBinder(pageHolder, "pageHolder");
    binder.bind(request);
    pageHolder.reload(false);

    return new ModelAndView(viewName, binder.getBindingResult().getModel());
}

From source file:no.abmu.abmstatistikk.web.AbstractStatusBrowsingController.java

/**
 * Refreshable status browser. //from  w w w. j  a va  2s  .  com
 * @param request current HTTP request
 * @param attribute to use store RefreshablePageholder in current http session
 * @param organisationType name of organisation type
 * @param schemaType name of schema type
 * @param view - if sucess use this view as view in ModelAndView
 * @param year - report year
 * @return a ModelAndView to render the response
 */
/*
    protected ModelAndView countyStatusBrowser(
    HttpServletRequest request, 
    String attribute,
    String organisationType, 
    String schemaType,
    String view,
    int year) {
        
// This should be replaced with AOP in an XML spring config-file.
if (!isSecureContext()) {
    logger.error("[refreshableCountyStatusBrowser]: no secureContext loging off");
    return new ModelAndView(ViewNameConst.LOGOFF_VIEW);
}
        
Integer countyNumber = getCountyNumberFromRequestOrLoggedOnUser(request);
if (null == countyNumber) {
    logger.error("[countyStatusBrowser]: could not get any countynumber, return to mainmenu.");
    return new ModelAndView(ViewNameConst.REDIRECT_2_MAIN_MENU);
}
        
OrgUnitFinderSpecificationBean finderBean = new OrgUnitFinderSpecificationBean();
finderBean.setOrganisationTypeName(organisationType);
finderBean.setCountyNumber(countyNumber);
finderBean.setTodayAsActiveDate();
        
Map model = statusBrowse(request, attribute, finderBean, schemaType,  year);
        
return new ModelAndView(view, model);
    }    
            
*/

// ////////////////////////////////////////////////////////////////////////
//
// Private methods for status browsing
//
// ////////////////////////////////////////////////////////////////////////

protected Map<String, Object> statusBrowse(HttpServletRequest request, String attribute,
        OrgUnitFinderSpecificationBean finderBean, SchemaTypeNameAndVersion schemaTypeNameAndVersion) {

    logger.info("Executing statusBrowse");

    PageHolder pageHolder = (PageHolder) request.getSession(true).getAttribute(attribute);

    if (null == pageHolder) {
        pageHolder = statusReportService.createNewPageHolder(finderBean, schemaTypeNameAndVersion);
        request.getSession().setAttribute(attribute, pageHolder);
    }

    ServletRequestDataBinder binder = new ServletRequestDataBinder(pageHolder, "pageHolder");
    binder.bind(request);
    pageHolder.reload(false);

    return binder.getBindingResult().getModel();

}

From source file:org.codehaus.enunciate.modules.rest.RESTResourceExporter.java

/**
 * Handles a specific REST operation./*w  w w.j av a 2  s.  c om*/
 *
 * @param operation The operation.
 * @param handler   The handler for the operation.
 * @param request   The request.
 * @param response  The response.
 * @return The model and view.
 */
protected ModelAndView handleRESTOperation(RESTOperation operation, RESTRequestContentTypeHandler handler,
        HttpServletRequest request, HttpServletResponse response) throws Exception {
    if (!this.endpoints.containsKey(operation.getVerb())) {
        throw new MethodNotAllowedException("Method not allowed.");
    }

    if ((this.multipartRequestHandler != null) && (this.multipartRequestHandler.isMultipart(request))) {
        request = this.multipartRequestHandler.handleMultipartRequest(request);
    }

    String requestContext = request.getRequestURI().substring(request.getContextPath().length());
    Map<String, String> contextParameters;
    try {
        contextParameters = resource.getContextParameterAndProperNounValues(requestContext);
    } catch (IllegalArgumentException e) {
        response.sendError(HttpServletResponse.SC_NOT_FOUND, request.getRequestURI());
        return null;
    }

    Object properNounValue = null;
    HashMap<String, Object> contextParameterValues = new HashMap<String, Object>();
    for (Map.Entry<String, String> entry : contextParameters.entrySet()) {
        String parameterName = entry.getKey();
        String parameterValue = entry.getValue();
        if (parameterName == null) {
            Class nounType = operation.getProperNounType();
            if (nounType != null) {
                //todo: provide a hook to some other conversion mechanism?
                try {
                    properNounValue = converter.convert(parameterValue, nounType);
                } catch (Exception e) {
                    throw new ParameterConversionException(parameterValue);
                }
            }
        } else {
            Class contextParameterType = operation.getContextParameterTypes().get(parameterName);
            if (contextParameterType != null) {
                //todo: provide a hook to some other conversion mechanism?
                try {
                    contextParameterValues.put(parameterName,
                            converter.convert(parameterValue, contextParameterType));
                } catch (Exception e) {
                    throw new ParameterConversionException(parameterValue);
                }
            }
        }
    }

    if ((properNounValue == null) && (operation.isProperNounOptional() != null)
            && (!operation.isProperNounOptional())) {
        throw new MissingParameterException(
                "A specific '" + resource.getNoun() + "' must be specified on the URL.");
    }

    HashMap<String, Object> adjectives = new HashMap<String, Object>();
    for (String adjective : operation.getAdjectiveTypes().keySet()) {
        Object adjectiveValue = null;

        if (!operation.getComplexAdjectives().contains(adjective)) {
            //not complex, map it.
            String[] parameterValues = request.getParameterValues(adjective);
            if ((parameterValues != null) && (parameterValues.length > 0)) {
                //todo: provide a hook to some other conversion mechanism?
                final Class adjectiveType = operation.getAdjectiveTypes().get(adjective);
                Class componentType = adjectiveType.isArray() ? adjectiveType.getComponentType()
                        : adjectiveType;
                Object adjectiveValues = Array.newInstance(componentType, parameterValues.length);
                for (int i = 0; i < parameterValues.length; i++) {
                    try {
                        Array.set(adjectiveValues, i, converter.convert(parameterValues[i], componentType));
                    } catch (Exception e) {
                        throw new KeyParameterConversionException(adjective, parameterValues[i]);
                    }
                }

                if (adjectiveType.isArray()) {
                    adjectiveValue = adjectiveValues;
                } else {
                    adjectiveValue = Array.get(adjectiveValues, 0);
                }
            }

            if ((adjectiveValue == null) && (!operation.getAdjectivesOptional().get(adjective))) {
                throw new MissingParameterException("Missing request parameter: " + adjective);
            }
        } else {
            //use spring's binding to map the complex adjective to the request parameters.
            try {
                adjectiveValue = operation.getAdjectiveTypes().get(adjective).newInstance();
            } catch (Throwable e) {
                throw new IllegalArgumentException(
                        "A complex adjective must have a simple, no-arg constructor. Invalid type: "
                                + operation.getAdjectiveTypes().get(adjective));
            }

            ServletRequestDataBinder binder = new ServletRequestDataBinder(adjectiveValue, adjective);
            binder.setIgnoreUnknownFields(true);
            binder.bind(request);
            BindException errors = binder.getErrors();
            if ((errors != null) && (errors.getAllErrors() != null) && (!errors.getAllErrors().isEmpty())) {
                ObjectError firstError = (ObjectError) errors.getAllErrors().get(0);
                String message = "Invalid parameter.";
                if (firstError instanceof FieldError) {
                    throw new ParameterConversionException(
                            ((FieldError) firstError).getRejectedValue().toString());
                }
                response.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
            }
        }

        adjectives.put(adjective, adjectiveValue);
    }

    Object nounValue = null;
    if (operation.getNounValueType() != null) {
        Class nounValueType = operation.getNounValueType();
        if ((nounValueType.equals(DataHandler.class))
                || ((nounValueType.isArray() && nounValueType.getComponentType().equals(DataHandler.class)))) {
            Collection<DataHandler> dataHandlers;
            if (this.multipartRequestHandler != null) {
                dataHandlers = this.multipartRequestHandler.parseParts(request);
            } else {
                dataHandlers = new ArrayList<DataHandler>();
                dataHandlers.add(new DataHandler(
                        new RESTRequestDataSource(request, resource.getNounContext() + resource.getNoun())));
            }

            nounValue = dataHandlers;
            if (operation.getNounValueType().equals(DataHandler.class)) {
                nounValue = dataHandlers.iterator().next();
            } else if (mustConvertNounValueToArray(operation)) {
                Class type = operation.getNounValueType();
                if ((type.isArray() && type.getComponentType().equals(DataHandler.class))) {
                    nounValue = dataHandlers.toArray(new DataHandler[dataHandlers.size()]);
                }
            }
        } else {
            try {
                //if the operation has a noun value type, unmarshall it from the body....
                nounValue = handler.read(request);
            } catch (Exception e) {
                //if we can't unmarshal the noun value, continue if the noun value is optional.
                if (!operation.isNounValueOptional()) {
                    throw e;
                }
            }
        }
    }

    Object result = operation.invoke(properNounValue, contextParameterValues, adjectives, nounValue,
            this.endpoints.get(operation.getVerb()));

    //successful invocation, set up the response...
    if (result instanceof DataHandler) {
        response.setContentType(((DataHandler) result).getContentType());
        ((DataHandler) result).writeTo(response.getOutputStream());
    } else {
        response.setContentType(
                String.format("%s; charset=%s", operation.getContentType(), operation.getCharset()));
        handler.write(result, request, response);
    }
    return null;
}

From source file:org.codehaus.groovy.grails.scaffolding.DefaultScaffoldRequestHandler.java

public Map handleCreate(HttpServletRequest request, HttpServletResponse reponse, ScaffoldCallback callback) {
    Object domainObject = domain.newInstance();
    ServletRequestDataBinder dataBinder = GrailsDataBinder.createBinder(domainObject, domain.getName(),
            request);/*from  w w  w  .j a  v  a  2s . c om*/
    dataBinder.bind(request);

    Map model = new HashMap();
    model.put(domain.getSingularName(), domainObject);

    return model;
}

From source file:org.gbif.portal.web.controller.registration.RegistrationController.java

/**
 * Ajax entry point that adds the resource to provider
 *//*from w  w  w . ja v a 2  s.  c  o m*/
@SuppressWarnings("unchecked")
public ModelAndView addDataResource(HttpServletRequest request, HttpServletResponse response) throws Exception {
    logger.info("Adding a resource...");
    debugRequestParams(request);

    ResourceDetail resourceDetail = new ResourceDetail();
    ServletRequestDataBinder binder = createBinder(request, resourceDetail);
    binder.bind(request);
    BindingResult result = binder.getBindingResult();
    validateDataResource(resourceDetail, result);

    logger.info("Adding the resource: " + resourceDetail.getName());
    uddiUtils.updateResource(resourceDetail, request.getParameter("businessKey"));
    Map<String, Object> data = new HashMap<String, Object>();
    data.put(REQUEST_RESOURCE, resourceDetail);
    data.putAll(referenceDataForResourceList(request));
    return null;
}

From source file:org.gbif.portal.web.controller.registration.RegistrationController.java

/**
 * Updates details in UDDI for this dataset.
 * //  w ww . j a v a  2  s.  c  o  m
 * @param request
 * @param response
 * @return
 * @throws Exception
 */
public ModelAndView completeManualRegistration(HttpServletRequest request, HttpServletResponse response)
        throws Exception {

    // bind to object
    ResourceDetail resource = new ResourceDetail();
    ServletRequestDataBinder binder = createBinder(request, resource);
    initBinder(request, binder);
    binder.bind(request);
    BindingResult result = binder.getBindingResult();
    validateDataResource(resource, result);
    logger.info("Adding the resource: " + resource.getName());

    if (result.hasErrors()) {
        logger.info("Errors have occurred: " + result);
        Map<String, Object> data = new HashMap<String, Object>();
        data.put(REQUEST_RESOURCE, resource);
        data.putAll(referenceDataForResourceList(request));
        data.put(BindingResult.MODEL_KEY_PREFIX + RegistrationController.REQUEST_RESOURCE, result);
        data.put("editableEndpoint", true);
        // put the errors in the request
        return new ModelAndView("registrationResourceManual", data);
    } else {
        String businessKey = request.getParameter("businessKey");
        uddiUtils.updateResource(resource, businessKey);
        return new ModelAndView(new RedirectView(
                request.getContextPath() + "/register/showDataResources?businessKey=" + businessKey));
    }
}

From source file:org.gbif.portal.web.controller.registration.RegistrationController.java

/**
 * Create a new user in LDAP.//from   w  ww  .  jav  a2s.c om
 * 
 * @param request
 * @param response
 * @return
 * @throws Exception
 */
public ModelAndView newUser(HttpServletRequest request, HttpServletResponse response) throws Exception {

    if (!isFormSubmission(request)) {
        ModelAndView mav = new ModelAndView("newUser");
        UserLogin ul = new UserLogin();
        mav.addObject("user", ul);
        return mav;
    }

    UserLogin ul = new UserLogin();
    ServletRequestDataBinder binder = createBinder(request, ul);
    binder.bind(request);
    BindingResult result = binder.getBindingResult();
    String systemUserName = getSystemUserName(ul.getUsername());
    String suggestedUsername = null;
    // validate
    if (StringUtils.isEmpty(ul.getUsername())) {
        result.rejectValue("username", ErrorMessageKeys.MUST_BE_SPECIFIED);
    } else if (ul.getUsername().length() < minimumUsernameLength) {
        result.rejectValue("username", ErrorMessageKeys.MUST_BE_MINIMIUM_LENGTH);
    } else if (!validateUsername(ul.getUsername())) {
        result.rejectValue("username", ErrorMessageKeys.CONTAINS_INVALID_CHARS);
    } else if (ldapUtils.userNameInUse(systemUserName)) {
        // iterate until a username available
        for (int i = 0; i < Integer.MAX_VALUE; i++) {
            suggestedUsername = getSystemUserName(ul.getUsername() + i);
            if (!ldapUtils.userNameInUse(suggestedUsername)) {
                break;
            }
        }
        result.rejectValue("username", ErrorMessageKeys.USERNAME_IN_USE);
    }

    if (StringUtils.isEmpty(ul.getFirstName())) {
        result.rejectValue("firstName", ErrorMessageKeys.MUST_BE_SPECIFIED);
    }
    if (StringUtils.isEmpty(ul.getSurname())) {
        result.rejectValue("surname", ErrorMessageKeys.MUST_BE_SPECIFIED);
    }

    if (!StringUtils.isEmpty(ul.getEmail())) {
        Pattern p = Pattern.compile(".+@.+\\.[a-z]+");
        Matcher m = p.matcher(ul.getEmail());
        boolean validEmail = m.matches();
        if (!validEmail)
            result.rejectValue("email", ErrorMessageKeys.INVALID_VALUE);
    } else {
        result.rejectValue("email", ErrorMessageKeys.MUST_BE_SPECIFIED);
    }
    if (StringUtils.isEmpty(ul.getPassword())) {
        result.rejectValue("password", ErrorMessageKeys.MUST_BE_SPECIFIED);
    } else if (!validatePassword(ul.getPassword())) {
        result.rejectValue("password", ErrorMessageKeys.MUST_BE_MINIMIUM_LENGTH);
    }

    if (result.hasErrors()) {
        ModelAndView mav = new ModelAndView("newUser");
        if (suggestedUsername != null) {
            mav.addObject("suggestedUsername", suggestedUsername);
        }
        mav.addObject(BindingResult.MODEL_KEY_PREFIX + "user", result);
        return mav;
    }

    // send verification email
    SimpleMailMessage verificationMessage = new SimpleMailMessage(userTemplateMessage);
    verificationMessage.setTo(ul.getEmail());
    String encryptedPassword = passwordUtils.encryptPassword(ul.getPassword(), true);
    verificationMessage.setSubject("Confirm e-mail address for GBIF Data Portal");
    verificationMessage.setText("Please visit the following link to confirm your e-mail address:\n\n"
            + "http://" + request.getHeader("host") + request.getContextPath() + "/user/verification" + "?fn="
            + ul.getFirstName() + "&sn=" + ul.getSurname() + "&e=" + ul.getEmail() + "&u=" + ul.getUsername()
            + "&p=" + encryptedPassword);
    try {
        mailSender.send(verificationMessage);
    } catch (MailException e) {
        // simply log it and go on...
        logger.error("Couldn't send message", e);
        ModelAndView mav = new ModelAndView("registrationVerificationFailureView");
        mav.addObject("user", ul);
        return mav;
    }

    // successful
    ModelAndView mav = new ModelAndView("registrationVerificationSuccessView");
    mav.addObject("user", ul);
    return mav;
}

From source file:org.gbif.portal.web.controller.registration.RegistrationController.java

/**
 * Saves the values for the data provider
 *//*ww w .j  a va2  s  .  com*/
@SuppressWarnings("unchecked")
public ModelAndView synchroniseProvider(HttpServletRequest request, HttpServletResponse response)
        throws Exception {
    ProviderDetail provider = new ProviderDetail();
    ServletRequestDataBinder binder = createBinder(request, provider);
    initBinder(request, binder);
    binder.bind(request);
    BindingResult result = binder.getBindingResult();
    validateDataProvider(provider, result);

    if (result.hasErrors()) {
        logger.info("Errors have occurred: " + result);
        Map<String, Object> data = new HashMap<String, Object>();
        // put the errors in the request
        data.put(BindingResult.MODEL_KEY_PREFIX + RegistrationController.REQUEST_PROVIDER_DETAIL, result);
        data.put(RegistrationController.REQUEST_CONTACT_TYPES, ProviderDetail.ContactTypes.values());
        data.put(RegistrationController.REQUEST_PROVIDER_DETAIL, result.getTarget());
        data.putAll(referenceDataForProvider(request));
        return new ModelAndView("registrationUpdateProviderDetail", data);
    } else {
        boolean success = synchroniseProvider(request, provider, result);
        if (!success) {
            return new ModelAndView("registrationUDDIFailure");
        }
        // return showDataResources(request, response, provider);
        return new ModelAndView(new RedirectView(request.getContextPath() + "/register/viewDataProvider?"
                + REQUEST_BUSINESS_UDDI_KEY + "=" + provider.getBusinessKey()));
    }
}

From source file:org.gbif.portal.web.controller.registration.RegistrationController.java

/**
 * This is the entry point for the AJAX call to update the resource
 *///from   w w  w  . j a  v  a 2s  .c om
@SuppressWarnings("unchecked")
public ModelAndView updateDataResource(HttpServletRequest request, HttpServletResponse response)
        throws Exception {
    logger.info("Updating a resource...");
    debugRequestParams(request);
    ResourceDetail resource = new ResourceDetail();
    ServletRequestDataBinder binder = createBinder(request, resource);
    binder.bind(request);
    String businessKey = request.getParameter(REQUEST_BUSINESS_UDDI_KEY);
    BindingResult result = binder.getBindingResult();
    validateDataResource(resource, result);

    if (result.getErrorCount() == 0) {
        // it is always the last one, due to the fact that only one is ever submitted
        // although it's id may be something other than 0
        if (logger.isDebugEnabled()) {
            logger.debug("Resource name: " + resource.getName());
            logger.debug("Resource description: " + resource.getDescription());
        }
        uddiUtils.updateResource(resource, request.getParameter(REQUEST_BUSINESS_UDDI_KEY));
        return new ModelAndView(new RedirectView(
                request.getContextPath() + "/register/showDataResources?businessKey=" + businessKey));
    } else {
        logger.error(result.getAllErrors());
        // put the errors in the request
        Map<String, Object> data = new HashMap<String, Object>();
        data.putAll(referenceDataForResource(request, resource));
        data.put(RegistrationController.REQUEST_RESOURCE, resource);
        data.put(BindingResult.MODEL_KEY_PREFIX + RegistrationController.REQUEST_RESOURCE, result);
        List<String> beanProperties = retrieveReadonlyPropertiesForResource(resource);
        data.putAll(referenceDataForResourceList(request));
        data.put("readonlyProperties", beanProperties);
        return new ModelAndView("registrationResourceDetail", data);
    }
}