• SpringMVC中的异步提交表单


     

     1.前言

    近期在做一个项目,前台框架用的是EasyUI+SpringMVC,因为对SpringMVC不太了解,所以刚開始接触的时候有点吃力,在此通过一个EasyUi中的DataGrid表格来总结一下.


     2.SpringMVC中的View向控制器传參

    在SpringMVC中,View怎样向控制器传參数呢?

    尤其是Form表单提交的时候,详细有例如以下几种方式

    2.1 HttpServletRequest

    能够通过getParameter()方法来获取前台传过来的參数


    2.2 Form表单绑定

    //这样才訪问的时候,直接就封装成了对象
    	public String queryPerson(person person){
    		return "index";
    	}


    通过这样,就直接把前台參数封装成了person对象,这样就接收到了參数


    2.3 任意參数设置

    //通过指定參数,就能够获取到前台传过来的值
    	public String queryPerson(String personId,String personName){
    		return "index";
    	}


    通过在方法中设置參数,就能够在前台获取到传过来的參数,但要保证,參数名称要一致



     3.SpringMVC中控制器向View视图传參数

    3.1 Model传參数

    //採用这样的方式,把数据放置到Model中,则能够在后台直接获取到数据
    	public String toPerson(Model model){
    		/*直接把值放置到model中,在前台通过${key}值来获取*/
    		model.addAttribute("p", "nihoama");	
    		return "index";	
    	}

    才用这样的方式,把參数封装到model中,然后在前台通过${key}值,就能够获取到控制器传过来的參数


    3.2 map传參数

    /*採用这样的方式,把数据写到map中,这时就能够在前台页面中获取到控制器的数据*/
    	protected ModelAndView handleRequestInternal(HttpServletRequest arg0,
    			HttpServletResponse arg1) throws Exception {
    		System.out.println("hello springmvc");
    		Map<String, String> map=new HashMap<String, String>();
    		map.put("p", "nihaoma");
    		//ModelAndView会被视图解析器解析自己主动加上前缀和后缀
    		return new ModelAndView("index",map);
    	}

    与model类似,把值放置到map中,然后在前台直接获取就可以


    3.3 PrintWriter对象输出内容

    //通过使用PrintWriter对象,就能够直接把内容打印到页面上
    	public void outString(PrintWriter out){
    		out.print("你好吗");
    	}

    通过PrintWriter对象,就能够直接把内容输出到页面上


    3.4 @ResponseBody输出字符串

    //通过打上此标签,就会直接把字符串输出到页面上
    	@ResponseBody 
    	public String outString(){
    		return "你好吗";
    	}


    假设在方法上放置此注解的话,那么返回的String值,就不在是视图,而将会是以流的形式返回字符串

     4.SpringMVC异步提交表单

    近期用到了异步提交表单的操作,以下展示一下

    JS操作

    // 加入字典类型信息方法
    function AddDictionaryType() {
    
    	$('#AddDictionaryTypeForm').form('submit', {
    		url : "addDictionaryType",
    		onSubmit : function() {
    			var isValid = $(this).form('validate');
    			return isValid; // 返回false终止表单提交
    		},
    		success : function(data) {
    			if (data == "success") {
    				$.messager.alert('提示', '加入成功。');
    				$('#dg').datagrid('reload'); // 又一次加载当前页面数据
    				$('#Addwin').window('close'); // 关闭窗体
    
    			} else {
    				$.messager.alert('提示信息', '加入失败,请联系管理员!', 'warning');
    			}
    
    		}
    	});
    
    }


    异步调用的方法

    /**
    	 * 字典类型的加入方法
    	 * 
    	 * @param request
    	 *            获取
    	 * @param response
    	 *            响应
    	 * @return 返回类型为void
    	 */
    	@RequestMapping("/addDictionaryType")
    	public void add(HttpServletRequest request, HttpServletResponse response) {
    
    		// 定义是否加入成功标识
    		boolean result = false;
    		// 定义字典类型实体
    		DictionaryType dictionaryType = new DictionaryType();
    		try {
    
    			// 防止中文乱码
    			dictionaryType.setDictionaryTypeName(new String(request
    					.getParameter("DictionaryTypeName").getBytes("iso-8859-1"),
    					"UTF-8"));
    			dictionaryType.setDictionaryTypeCode(new String(request
    					.getParameter("DictionaryTypeCode").getBytes("iso-8859-1"),
    					"UTF-8"));
    			dictionaryType.setStatus(new String(request.getParameter("status")
    					.getBytes("iso-8859-1"), "UTF-8"));
    			// 获得当前计算机的名称
    			dictionaryType.setOperator(new String(System.getProperty(
    					"user.name").getBytes("iso-8859-1"), "UTF-8"));
    			dictionaryType.setComment(new String(request
    					.getParameter("comment").getBytes("iso-8859-1"), "UTF-8"));
    
    			// 调用保存的方法
    			result = dictionaryTypeBean.saveEntity(dictionaryType);
    			// 推断是否保存成功,成功的话,向前台输出success
    			if (result) {
    				outToJson.outJson(response, "success");
    			} else {
    				// 失败的话,向前台输出error
    				outToJson.outJson(response, "error");
    			}
    
    		} catch (Exception e) {
    			System.out.println("加入字典类型失败");
    			e.printStackTrace();
    		}
    
    	}

    上面就直接通过PrintWriter对象来输出參数,然后在JS中异步获取来进行推断


     





  • 相关阅读:
    CF1236B Alice and the List of Presents |数学
    luogu P1832 A+B Problem |背包
    CF832D Misha, Grisha and Underground |LCA
    bzoj1709[Usaco2007 Oct]Super Paintball超级弹珠*
    bzoj3314[Usaco2013 Nov]Crowded Cows*
    bzoj4300绝世好题
    bzoj2101[Usaco2010 Dec]Treasure Chest 藏宝箱*
    bzoj3437小P的牧场
    bzoj2016[Usaco2010]Chocolate Eating*
    bzoj2015[Usaco2010 Feb]Chocolate Giving*
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5216678.html
Copyright © 2020-2023  润新知