Spring MVC获取复杂型List

这个问题是在项目中需要做一个用户设置表时遇到的

顺便也可以提一下数据库表设计用户设置表的一种设计思想,

下面把用户设置表的SQL也贴出来供大家参考:



CREATE TABLE `me_user_settings` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `meta_key` varchar(255) NOT NULL DEFAULT '0' COMMENT '我的项目通知',
  `meta_value` tinyint(1) unsigned zerofill NOT NULL DEFAULT '0' COMMENT '新消息通知',
  `user_id` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;


只需要这四个字段。key表示要设置的项,value表示状态:0关闭;1开启;

这样设计的好处就是有几个功能就添加几条数据,方便以后拓展功能,还有不同用户类型功能不同也可以解决,机动性很好。


回归主题,由于这样设计表所以要完成一次添加多条数据,一开始想的是用逻辑代码判断没开启就赋值,这样代码冗余度高,耦合性又不好。

所以想到前台直接传一个数组然后一个for循环就实现了。

先看Html代码:

userSetting.jsp(只截取了代码片段)

<input type="hidden" name="userSettings[0].userId" value=<shiro:principal property="id"/> />
<input type="hidden" name="userSettings[0].metaKey" value="newMessage"/>
<input type="checkbox" class="checkbox" value="1" id="inform1" name="userSettings[0].metaValue" checked /> 
<label for="inform1">新消息通知</label>

<input type="hidden" name="userSettings[1].userId" value=<shiro:principal property="id"/> />
<input type="hidden" name="userSettings[1].metaKey" value="myAttention"/>
<input type="checkbox" class="checkbox" value="1" id="inform2" name="userSettings[1].metaValue"/>
<label for="inform2">站内信通知</label>

下面是JAVA代码:

userSetting.java

public class UserSetting {
	private Integer id;
	private Integer userId;
	private String metaKey;
	private int metaValue;

/*getter and setter*/
}

UserSettingController.java


@RequestMapping(value = "/update/setting",method = RequestMethod.POST)
	public ResponseEntity<HttpEntity> updateUserSetting(@RequestBody UserSettingsList userSettings){
		log.debug(userSettings);
		List<UserSetting> settings = userSettings.getUserSettings();
		
		for (int i = 0; i < settings.size(); i++) {
			log.debug(settings.get(i).getMetaKey());
		}
		
		return new ResponseEntity(userSettings,HttpStatus.OK);
	}

这里用@RequestParam是不能获取的,最后想到用@RequestBody获取,但是要将List<UserSetting> 封装一下,这里是关键


UserSettingsList.java


public class UserSettingsList{

	private List<UserSetting> userSettings;
	public UserSettingsList (){}
	public List<UserSetting> getUserSettings() {
		return userSettings;
	}
	public void setUserSettings(List<UserSetting> userSettings) {
		this.userSettings = userSettings;
	}

}

这样就可以从后台直接获取一个复杂型List<Object>


只是做一下工作笔记,希望对大家有帮助,欢迎讨论。


Zemo手打,转载标明出处:http://blog.csdn.net/zemochen/article/details/17965689

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值