Spring MVC 保存checkbox的value

最近在做表单,遇到了将checkbox的value保存到数据库的问题。

在JSP页面上可以使用form:checkbox标签,和字符串数组进行绑定。
在Controller的方法中,可以用(String[] arr)作为参数,接收checkbox传来的值。

这样把问题转化为,字符串数组和字符串互相转化。
可以用","作为分隔符,合并多个value(不过要注意value中不要再有分割符了)


例如我们有Fruit类(对应数据库中的fruit表,其中name字段是我们要和页面上的checkbox相互对应的)

import org.apache.commons.lang.StringUtils;
public class Fruit {
	private String name;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	// 添加字符串数组和字符串互相转化的适配方法
	public String[] getNameArr(){
		return this.name.split(",");
	}
	public void setNameArr(String[] nameArr){
		this.name = StringUtils.join(nameArr, ",");
	}
}

之后看测试页面test.jsp,有如下表单:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>

<form:form commandName="fruit" action="fruit.json" method="post">
	<form:checkbox value="apple" path="nameArr" /> Apple
	<form:checkbox value="banana" path="nameArr" /> Banana
	<form:checkbox value="orange" path="nameArr" /> Orange
	<form:checkbox value="peach" path="nameArr" /> Peach
	<input type="submit" />
</form:form>


最后在Controller中添加地址映射

	@RequestMapping("/test")
	public String test(Model model) {
		Fruit fruit = new Fruit();
		fruit.setName("apple,banana");
		model.addAttribute("fruit", fruit);
		return "test";
	}
	
	@RequestMapping("/fruit.json")
	@ResponseBody
	public Fruit fruitJson(Fruit fruit){
		return fruit;
	}

运行访问test.jsp可以看到如下页面:


JSP页面处理<form:checkbox> 中的path时,会执行getNameArr()方法,"apple,banana" 就被转化成了{"apple","banana"}

再测setNameArr(String[] nameArr)方法,选中几个checkbox,提交表单


结果如下:

{
    "name": "apple,orange,peach",
    "nameArr": [
        "apple",
        "orange",
        "peach"
    ]
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值