001: /*
002: * Copyright 2002-2006 the original author or authors.
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016:
017: package org.springframework.web.bind;
018:
019: import javax.servlet.ServletException;
020: import javax.servlet.ServletRequest;
021:
022: import org.springframework.validation.BindException;
023: import org.springframework.validation.ValidationUtils;
024: import org.springframework.validation.Validator;
025:
026: /**
027: * Offers convenience methods for binding servlet request parameters
028: * to objects, including optional validation.
029: *
030: * @author Juergen Hoeller
031: * @author Jean-Pierre Pawlak
032: * @since 10.03.2003
033: * @deprecated since Spring 1.2.7: prefer direct ServletRequestDataBinder usage,
034: * potentially in combination with a PropertyEditorRegistrar
035: * @see ServletRequestDataBinder
036: * @see org.springframework.beans.PropertyEditorRegistrar
037: */
038: public abstract class BindUtils {
039:
040: /**
041: * Bind the parameters from the given request to the given object.
042: * @param request request containing the parameters
043: * @param object object to bind the parameters to
044: * @param objectName name of the bind object
045: * @return the binder used (can be treated as BindException or Errors instance)
046: */
047: public static BindException bind(ServletRequest request,
048: Object object, String objectName) {
049: ServletRequestDataBinder binder = new ServletRequestDataBinder(
050: object, objectName);
051: binder.bind(request);
052: return binder.getErrors();
053: }
054:
055: /**
056: * Bind the parameters from the given request to the given object,
057: * allowing for optional custom editors set in an bind initializer.
058: * @param request request containing the parameters
059: * @param object object to bind the parameters to
060: * @param objectName name of the bind object
061: * @param initializer implementation of the BindInitializer interface
062: * which will be able to set custom editors
063: * @return the binder used (can be treated as BindException or Errors instance)
064: * @throws ServletException if thrown by the BindInitializer
065: */
066: public static BindException bind(ServletRequest request,
067: Object object, String objectName,
068: BindInitializer initializer) throws ServletException {
069:
070: ServletRequestDataBinder binder = new ServletRequestDataBinder(
071: object, objectName);
072: if (initializer != null) {
073: initializer.initBinder(request, binder);
074: }
075: binder.bind(request);
076: return binder.getErrors();
077: }
078:
079: /**
080: * Bind the parameters from the given request to the given object,
081: * invoking the given validator.
082: * @param request request containing the parameters
083: * @param object object to bind the parameters to
084: * @param objectName name of the bind object
085: * @param validator validator to be invoked, or <code>null</code> if no validation
086: * @return the binder used (can be treated as Errors instance)
087: */
088: public static BindException bindAndValidate(ServletRequest request,
089: Object object, String objectName, Validator validator) {
090:
091: BindException binder = bind(request, object, objectName);
092: if (validator != null) {
093: ValidationUtils.invokeValidator(validator, object, binder);
094: }
095: return binder;
096: }
097:
098: /**
099: * Bind the parameters from the given request to the given object,
100: * invoking the given validator, and allowing for optional custom editors
101: * set in an bind initializer.
102: * @param request request containing the parameters
103: * @param object object to bind the parameters to
104: * @param objectName name of the bind object
105: * @param validator validator to be invoked, or <code>null</code> if no validation
106: * @param initializer implementation of the BindInitializer interface
107: * which will be able to set custom editors
108: * @return the binder used (can be treated as Errors instance)
109: * @throws ServletException if thrown by the BindInitializer
110: */
111: public static BindException bindAndValidate(ServletRequest request,
112: Object object, String objectName, Validator validator,
113: BindInitializer initializer) throws ServletException {
114:
115: BindException binder = bind(request, object, objectName,
116: initializer);
117: if (validator != null) {
118: ValidationUtils.invokeValidator(validator, object, binder);
119: }
120: return binder;
121: }
122:
123: }
|