标签:异常 ref 属性 html nop 一个 orm encoding 前端
上一篇中提到,当前后端命名规则不一致时,需要通过注解@RequestParam接受参数,这个注解是作用在参数上。下面通过实例说明,场景如下:
在页面输入两个参数,控制器通过注解接受,并将接受到的数据渲染到新的视图。所以首先来创建输入参数页面,然后创建控制器,再创建对应的响应视图。
1、创建输入参数页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <% String root = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + root + "/"; %> <script type="text/javascript" src="<%=basePath%>jslib/jquery-1.8.3.min.js"></script> <script type="text/javascript" src="<%=basePath%>jslib/jquery.form.js"></script> <script type="text/javascript" src="<%=basePath%>js/param.js"></script> <link href="<%=basePath%>css/param.css" type="text/css" rel="stylesheet"> <title>Insert title here</title> </head> <body> <!-- 简单参数传递 --> <p style="text-align: center;color: red;font-size: x-large;">Spring MVC控制器接受参数方式测试</p> <div class="param"> <!--使用注解获取参数 --> <div class="public annotaion"> <p style="text-align: center;">注解法获取</p> <form id="annoForm" action="<%=basePath%>param/annoParam" method="post"> <table> <tr> <td>id:</td> <td><input type="text" name="paramId" value=""></td> </tr> <tr> <td>名称:</td> <td><input type="text" name="paramName" value=""></td> </tr> <tr> <td></td> <td style="text-align: right;"><input type="submit" value="提交" id="setAnnoParam"></td> </tr> </table> </form> </div> </body> </html>
页面如下:
2、创建控制器
@Controller @RequestMapping("/param") public class ParamController { /** * 通过注解的方式获取参数 * * @param paramId * @param paramName * @return */ @RequestMapping(value = "annoParam", method = RequestMethod.POST) public ModelAndView getParamByAnno(@RequestParam(value = "paramId", required = false) String id, @RequestParam("paramName") String name) { ModelAndView mv = new ModelAndView(); System.out.println(id); System.out.println(name); mv.addObject("paramId", id); mv.addObject("paramName", name); mv.setViewName("annoParam"); return mv; } }
在控制器中,我的参数是id和name,但是前端传过来的是paramId和paramName,这个时候如果直接接受会报错,所以要通过注解进行转化,注解的值就是前端传过来的参数名,可以看到前端页面中的参数名就是paramId和paramName。
注意??:如果参数被注解@RequestParam修饰,默认情况下该参数不能为空,如果为空系统会抛异常,如果允许它为空,还要给注解增加一个required属性,属性值设置为false即可。
上面的控制器获取到参数之后将数据渲染到了视图annoParam中,所以下一步就是创建这个响应视图。
3、创建响应页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Annotatioin Param</title> </head> <body> <h2> 获取到的参数id是:<label>${paramId }</label> <br /> 获取到的参数名称是:<label>${paramName }</label> </h2> </body> </html>
在该页面获取了控制器渲染的数据。至此,代码完成,下面开始测试。
4、测试
首先在页面输入如下参数:
点击提交之后结果如下:
可以看到渲染成功,说明控制器接受参数成功。
5、总结
注解方式需要注意两点:
1、注解的value属性值为前端传递过来的参数名
2、默认不能为空,如果希望允许为空,必须增加属性required,并设置其值为false
Spring MVC(五)--控制器通过注解@RequestParam接受参数
标签:异常 ref 属性 html nop 一个 orm encoding 前端
原文地址:https://www.cnblogs.com/hellowhy/p/9741344.html