spring SimpleFormController流程

最近在学习spring mvc.

网上了收集了一下SimpleFormController的流程,大都是这样说的:

url请求来到时,这样处理: get 方法
    a) 请求传递给一个controller对象 
    b) 调用formBackingObject()方法,创建一个command对象的实例。 
    c) 调用initBinder(),注册需要的类型转换器 
    d) 调用showForm()方法,返回准备呈现给用户的视图 
    e) 调用referenceData()方法,准备给用户显示相关的数据。如用户登录需要选择的年度信息 
    f) 返回formView指定的视图 
表单请求来到时,这样处理: post 方法
    a) 调用formBackingObject()方法,创建一个command对象的实例。 
    b) 将请求传来的参数写入command对象 
    c) 如果设置为要求验证,则调用validator类进行数据验证 
    d) 调用onBindAndValidate()方法,该方法允许自定义数据绑定和校验处理 
    e) 调用onSubmit()方法,进行业务逻辑处理 

 

但是感觉 get 方法时,说的有误

看一下AbstractFormController的源码感觉不对,源码是这样的:

	@Override
	protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
			throws Exception {

		// Form submission or new form to show?
		if (isFormSubmission(request)) {
			// Fetch form object from HTTP session, bind, validate, process submission.
			try {
				Object command = getCommand(request);
				ServletRequestDataBinder binder = bindAndValidate(request, command);
				BindException errors = new BindException(binder.getBindingResult());
				return processFormSubmission(request, response, command, errors);
			}
			catch (HttpSessionRequiredException ex) {
				// Cannot submit a session form if no form object is in the session.
				if (logger.isDebugEnabled()) {
					logger.debug("Invalid submit detected: " + ex.getMessage());
				}
				return handleInvalidSubmit(request, response);
			}
		}

		else {
			// New form to show: render form view.
			return showNewForm(request, response);
		}
	}

 

	protected boolean isFormSubmission(HttpServletRequest request) {
		return "POST".equals(request.getMethod());
	}

 可以看到,当 方法为 get的时候,

    b) 调用formBackingObject()方法,创建一个command对象的实例。 
    c) 调用initBinder(),注册需要的类型转换器 

这两步是没有执行的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值