List of usage examples for org.springframework.web.bind ServletRequestDataBinder bind
public void bind(ServletRequest request)
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); } }