Controller方法形參接收checkbox的值,既可以用String,也可以用String[]。
字符串數組接收的測試代碼如下:
@Controller @RequestMapping("/mycontroller") public class MyController { @RequestMapping(method = RequestMethod.GET) public String form() { return "mycontroller"; } @RequestMapping(method = RequestMethod.POST) public String form1(@RequestParam("interest") String[] interest, Model model) { String a = Arrays.toString(interest); model.addAttribute("ins", a); return "ok"; } }
測試頁面如下:
/WEB-INF/jsp/mycontroller.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>請選擇</title> </head> <body> <form action="${pageContext.request.contextPath }/mycontroller.action" method="post"> <input type="checkbox" name="interest" value="a1" />a1<br /> <input type="checkbox" name="interest" value="a2" />a2<br /> <input type="checkbox" name="interest" value="a3" />a3<br /> <input type="checkbox" name="interest" value="a4" />a4<br /> <input type="checkbox" name="interest" value="a5" />a5<br /> <input type="submit"/> </form> </body> </html>
結果顯示頁面如下:
/WEB-INF/jsp/ok.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>操作成功</title> </head> <body> 選擇的內容是:${ins}<br/> </body> </html>
結果:
字符串接收的測試代碼如下(測試完數組接收后 修改即可):
@Controller
@RequestMapping("/mycontroller") public class MyController { @RequestMapping(method = RequestMethod.GET) public String form() { return "mycontroller"; } @RequestMapping(method = RequestMethod.POST) public String form1(@RequestParam("interest") String interest, Model model) { model.addAttribute("ins", interest); return "ok"; } }
結果是:
小知識:
如果checkbox都留空(不選擇),那么Controller會報錯。解決辦法:①前端js判斷;②前端加一個hidden的checkbox。
補充方法:
@RequestParam(value = "interest", required = false)