论坛首页 Java企业应用论坛

Spring MVC 参数封装

浏览 10808 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-08-09   最后修改:2012-08-10
Spring MVC 能够自动封装前台form中的参数,我用extJs的form提交后Controller就不能获得值,请问大家这是为什么呢。SyscxkzInfo是一个实体Bean
	@RequestMapping("/managerecord/manage_syscqy/doEditSyscxkzRecord.do")
	public void doEditRecord(@ModelAttribute() SyscxkzInfo dsh,HttpServletResponse response,
			HttpServletRequest request,String record,String type){
		System.out.println("record:" + record);
		System.out.println("type:" + type);
		List list = new ArrayList();
		list.add(dsh);
		String JsonStr = ConverListToJson.ConverListToPageJson(list,1);
		System.out.println(JsonStr);
	}

var scdz=new Ext.form.TextField({
			fieldLabel:'生产地址',	
				anchor    : anchorVal,
				name :'scdz',
				value:record.data.scdz,
				style:marginbottomStyle
			});
			var fzrq=new Ext.form.DateField({
				fieldLabel:'发证日期',	
				format:'Y/m/d',
				name : 'fzrq',
				allowBlank : false,
				blankText: '非空字段!',
				anchor    : anchorVal,
				value:record.data.fzrq,
				style:marginbottomStyle
		});

我把这些field放进了一个Array中。Ext的FormPanel的items放这个Array
			MyForm.getForm().submit({
			    url:url,
			    method: 'POST',
			    params: {record:cmbDataType.getValue(),type:cmbDataSource.getValue()},
			    waitTitle: '请等待',
			    waitMsg: '操作进行中,请稍候...',
			    timeout:1000 * 60 * 30,
			    success:function(form ,action){
			        Ext.Msg.alert('操作成功', action.result.msg);
			    },
			    failure:function(form,action){
				switch (action.failureType) { 
				    case Ext.form.Action.CLIENT_INVALID:
					    Ext.Msg.alert('提示信息', '	录入数据有空');
					    break;
				    case Ext.form.Action.CONNECT_FAILURE:
					    Ext.Msg.alert('操作失败', '链接超时');
					    break;
				    case Ext.form.Action.SERVER_INVALID:
					     Ext.Msg.alert('操作失败', action.result.msg);
					    break;
                     } 
        }
}); 

上面这段是提交时的代码

谢谢大家,我昨天搞了半天Form还是不能全部提交。后来我想反正Spring是会封装参数的。我就把
每个文本框的Field的值都取了出来

var dsh = {
    xxx : xxx.getValue(),
    xxx : xxx.getValue()
}

然后FormPanel 的 params配置项配置dsh.这样传到上面的控制器中是能获取到封装好的bean的
   发表时间:2012-08-09  
把http请求的内容贴出来,ext看不懂
0 请登录后投票
   发表时间:2012-08-09  
你只提交了type和recode是吗,没用@requestparam
0 请登录后投票
   发表时间:2012-08-09   最后修改:2012-08-09
@ModelAttribute() SyscxkzInfo dsh

括号里面竟然是空的!?这样写很奇怪,我没用过这种写法哦

看不懂Extjs请求的内容,不过你可以删除那个括号,或者直接删除“@ModelAttribute()”试试,SpringMVC同样会帮你封

装成对象SyscxkzInfo。
0 请登录后投票
   发表时间:2012-08-09  
放在querystring里试试看,然后control里的参与以@requestparam方式传入。
没怎么用过这种方式。
0 请登录后投票
   发表时间:2012-08-10  
试过直接用json POST到后台去么?
0 请登录后投票
   发表时间:2012-08-10  
你提交的是name :'scdz' 
name : 'fzrq'

你接收的是String record,String type。肯定不行呀
0 请登录后投票
   发表时间:2012-08-10  
anders02 写道
放在querystring里试试看,然后control里的参与以@requestparam方式传入。
没怎么用过这种方式。

我昨天试过了。给Field定义的了ID。控制器里面用request也获取不到想要的值。不知道这是肿么回事
0 请登录后投票
   发表时间:2012-08-10  
char1st 写道
试过直接用json POST到后台去么?

我现在做的就和用Json传到后台貌似是一样的。不知道Json格式的会不会自动封装
0 请登录后投票
   发表时间:2012-08-10  
xiumeiyun 写道
char1st 写道
试过直接用json POST到后台去么?

我现在做的就和用Json传到后台貌似是一样的。不知道Json格式的会不会自动封装


肯定的告诉你,会!

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics