利用getParameterNames实现一个按钮所有模块数据都提交

来源:互联网 发布:有经商软件吗 编辑:程序博客网 时间:2024/06/06 13:03

1.总结:

1、注意页面的name为emails.host,这样才可把 group和相应属性分开
2、作为Value的Map需转化为JSON类型数据后再插入数据库
3、把从数据库中读出的数据先转换为JSON类型,再由JSON类型转换为Map类型,最后放入作为Map的Setting中
 


 三个模块共用一个确定按钮!

页面如下:

<table class="form-table"><tr><td class="label">主机:</td><td><input type="text"   name="emails.host" value="${emails.host}"/></td></tr><tr><td class="label">发信邮箱</td><td><input type="text" name="emails.username" value="${emails.username}"/></td></tr><tr><td class="label">密码:</td><td><input type="password" name="emails.password" value="${emails.password}"/></td></tr></table>
 
public String save(){HttpServletRequest  request = ServletActionContext.getRequest();Enumeration<String> names = request.getParameterNames();     //request.getParameterNames()所返回的枚举Enumeration类Map<String,Map<String,String>> settings = new HashMap<String, Map<String,String>>();    while(names.hasMoreElements()){    String name= names.nextElement();    String[]name_ar = name.split("\\.");      //name.split(regex) 如果有特殊符号,里面的string是正则表达式,需转义      //此处name为comments.pageSize,故以.分割,需转义      //分割后的name_ar为:[comments, pageSize]    if(name_ar.length!=2) continue;        String groupName = name_ar[0];    String paramName  = name_ar[1];    String paramValue = request.getParameter(name);        Map<String,String> params = settings.get(groupName);    if(params==null){    params = new HashMap<String, String>();    settings.put(groupName, params);    }    params.put(paramName, paramValue);     }    settingService.save( settings );this.msgs.add("配置修改成功");this.urls.put("系统设置", "setting!edit_input.do");return this.MESSAGE;}

 数据库中数据如图:


Map<String,Map<String,String>> settings = new HashMap<String, Map<String,String>>();Map<String,String> params = new HashMap<String, String>();setting(Map类型):{photo={}, comments={pageSize=5}}{emails={password=123456}, photo={watermark=off, marksize=12, detail_pic_width=350}, comments={pageSize=5, directShow=0}}保存Setting到数据库:(作为Value的Map需转化为JSON类型数据后再插入数据库)        public void save( Map<String,Map<String,String>> settings ) throws SettingRuntimeException {Iterator<String> settingkeyItor = settings.keySet().iterator(); while ( settingkeyItor.hasNext() ) {String settingKey = settingkeyItor.next();JSONObject jsonObject = JSONObject.fromObject( settings );this.daoSupport.execute("update settings set cfgvalue=? where cfg_group=?",jsonObject.toString(),settingKey);} }

 从数据库中读出数据并输出为Map类型:

String sql = "select * from settings";
List<Map<String, String>> list = this.baseDaoSupport.queryForList(sql);
list:
[{id=1, code=null, cfgvalue={"detail_pic_height":"470","watermark":"off","thumbnail_pic_height":"245","markcolor":"#000000","thumbnail_pic_width":"185","album_pic_height":"2030","markpos":"1","album_pic_width":"1500","marksize":"12","detail_pic_width":"350"}, cfg_group=photo},
{id=2, code=null, cfgvalue={"anonymous":"0","validcode":"1","pageSize":"5","directShow":"0"}, cfg_group=comments},
{id=3, code=NULL, cfgvalue={"title":"在线客服","qqlist":"52560956:技术支持,25106942:市场营销","state":"1","worktime":"9:00至18:00","qq":"1"}, cfg_group=im},
{id=4, code=null, cfgvalue={"username":"EmailTest@126.com","host":"smtp.126.com","password":"123456"}, cfg_group=emails}]

setting_value:
{"detail_pic_height":"470","watermark":"off","thumbnail_pic_height":"245","markcolor":"#000000","thumbnail_pic_width":"185","album_pic_height":"2030","markpos":"1","album_pic_width":"1500","marksize":"12","detail_pic_width":"350"}
itemMap:
{detail_pic_height=470, watermark=off, thumbnail_pic_height=245, album_pic_height=2030, thumbnail_pic_width=185, markcolor=#000000, markpos=1, marksize=12, album_pic_width=1500, detail_pic_width=350}

 

public Map<String,Map<String ,String>>  getSetting() {String sql = "select * from settings";List<Map<String, String>> list = this.baseDaoSupport.queryForList(sql);Map<String,Map<String,String>> cfg = new HashMap();for (Map<String,String> map : list) {String setting_value = map.get("cfg_value");if(StringUtil.isEmpty(setting_value)){cfg.put( map.get("cfg_group"), new HashMap<String, String>());}else{JSONObject jsonObject = JSONObject.fromObject( setting_value );  Map itemMap = (Map)jsonObject.toBean(jsonObject, Map.class);cfg.put( map.get("cfg_group"), itemMap);}}return cfg;}

 

JSONObject.toBean(jsonObject,class):

 

 

 

  • 大小: 21.7 KB
  • 大小: 39.7 KB
  • 查看图片附件
0 0
原创粉丝点击