前台传过来的数据为(横线中间部分)
id answer
----------------------------
234:A
234:B
234:C
235: A
----------------------------
Enumeration en = request.getParameterNames();
while(en.hasMoreElements())
{
String name = en.nextElement().toString();
String values[] = request.getParameterValues(name);
for(int j=0; j<values.length; j++)
{
}使用枚举类型接收问题:判断是否重复,重复合并答题项处理后效果如下
-------------------------------
234:A、B、C
235:A
-------------------------------
注:搜索了半天也没找到。是不是枚举类型不能判断重复元素呀
id answer
----------------------------
234:A
234:B
234:C
235: A
----------------------------
Enumeration en = request.getParameterNames();
while(en.hasMoreElements())
{
String name = en.nextElement().toString();
String values[] = request.getParameterValues(name);
for(int j=0; j<values.length; j++)
{
}使用枚举类型接收问题:判断是否重复,重复合并答题项处理后效果如下
-------------------------------
234:A、B、C
235:A
-------------------------------
注:搜索了半天也没找到。是不是枚举类型不能判断重复元素呀
问题:判断是否重复,重复合并答题项没看懂,是取出value与那么对应嘛?
判断ID是否重复 如果重复将答案合并
是否判断重复,是和集合有关的。本身不涉及是否重复的约定
Enumeration en = request.getParameterNames();
Map<String,String> map = new HashMap<String,String>();
while(en.hasMoreElements()){
String name = (String)en.nextElement();
String id = name.substring(0, name.length() - name.replaceFirst("\\d+", "").length());
System.out.println(id);
String[] values = request.getParameterValues(name);
for(String value : values){
if(map.containsKey(id)){
map.put(id, map.get(id)+","+value);
}else{
map.put(id,value);
}
}
}
for(Iterator<String> it = map.keySet().iterator(); it.hasNext();){
String id = it.next();
System.out.println(id+":"+map.get(id));
} <form action="TestServlet">
<input type="checkbox" name="234A" value="A"> A
<input type="checkbox" name="234B" value="B"> B
<input type="checkbox" name="234C" value="C"> C
<input type="checkbox" name="235A" value="A"> A
<input type="submit">
</form>
这个要你自己处理判断是都重复,Enumeration这玩意怎么知道。
Enumeration en= request.getParameterNames();//从前台获取数据 形如 234:A 234:B 235:B
List<String> type1=new ArrayList<String>();//定义集合作为筛选重复项
while(en.hasMoreElements())//遍历枚举
{
String name = en.nextElement().toString();//获取枚举元素 234 234 235
String answers="";//定义中间变量
String values[] = request.getParameterValues(name); //获取枚举对应的值A B B
for(int j=0; j<values.length; j++){
type1.add(name); //向集合中添加元素
if(type1.contains(name))//判断是否重复
{
answers+=values[j]+"、";//重复就将对应的值合并
}else{
type1.add(name);//不重复继续添加
}
}
type1.clear();//循环结束清空集合) 此时获取的值A、B、和B、
answers=answers.substring(0,answers.length()-1);//此时获取的值A、B和B
System.out.println(name+":"+answers); //此时获取的值234:A、B和235:B
}
枚举与集合果然是不同的概念。。 由于前台JS不熟练导致的悲剧。 如果前台直接把它变成 234:A、B 后台直接处理就ok了。 因为系统比较有年代了。。前台看的实在是晕凡是JSP能够出现的符号基本齐了
jsp自己的标签、el表达式、java代码、java注释、js、css、还有自己封装的标签。
Enumeration en= request.getParameterNames();//从前台获取数据 形如 234:A 234:B 235:Bif(type1.contains(name))//判断是否重复234:A 234:B 235:B这3个能相等嘛?需要把id解析出来判断,就想我写的那样,
String name = en.nextElement().toString();//获取枚举元素 234 234 235这个name不是//从前台获取数据 形如 234:A 234:B 235:B
怎么变成//获取枚举元素 234 234 235??
一个name 后面是 value
request.getParameterNames();//取的name的值不包括value值呵呵谢谢你了