同一页面修改相同多组相同属性

我们要修改一组对象的名称,怎么做呢?

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);

文/程忠 浏览次数:0次   2020-03-10 06:37:41

相关阅读


评论:
点击刷新

↓ 广告开始-头部带绿为生活 ↓
↑ 广告结束-尾部支持多点击 ↑