同一页面修改相同多组相同属性
我们要修改一组对象的名称,怎么做呢?
1.在生成页面input标签的name,要有一定规则.下面我就以"属性名_ID"这样的规则来生成。前端代码是:
for(let i=0;i<listObj.length;i++){ let spaceObj=listObj[i]; spaceHtml+="<div><span class='inputLine'>答案/关键词:</span><span><input type='text' name='words_"+spaceObj["id"]+"' value='"+spaceObj["words"]+"'/></span></div>"; spaceHtml+="<div><span class='inputLine'>示例:</span><span><input type='text' name='example_"+spaceObj["id"]+"' value='"+getView(spaceObj["example"])+"'/></span></div>"; }2.用javascript的收集所有标签,提交。代码如下:
let words=$("input[type='text']"); for(let i=0;i<words.size();i++){ param[$(words.get(i)).attr("name")]=$(words.get(i)).val(); } let types=$("select"); for(let i=0;i<types.size();i++){ param[$(types.get(i)).attr("name")]=$(types.get(i)).val(); }3.后台接收这样的参数就自定义封装对象方法:
private <T> List<T> convertSpace(HttpServletRequest request,Class cls){ Map<Long,Map<String,Object>> spaceMap=new HashMap<>(); Enumeration<String> names=request.getParameterNames(); while(names.hasMoreElements()) { String name=names.nextElement(); String propId[]=name.split("_"); if(propId!=null&&propId.length==2) { Long id=null; try { id=Long.valueOf(propId[1]); }catch(Exception e) { log.error(e.getMessage(),e); continue; } Map<String,Object> ds=spaceMap.get(id); if(ds==null) { ds=new HashMap<>(); ds.put("id", id); spaceMap.put(id, ds); } ds.put(propId[0], request.getParameter(name)); } } return JSONObject.parseArray(JSONArray.toJSONString(spaceMap.values()), cls); }调用一下这个函数来获取参数:
List<TBookTaskQuestionPaperDetailSpace> spaces=convertSpace(request,TBookTaskQuestionPaperDetailSpace.class);
相关阅读
评论:
↓ 广告开始-头部带绿为生活 ↓
↑ 广告结束-尾部支持多点击 ↑