情况是这样的,用Struts2+hibernate 在做一个在线考试系统。目前写到题目展现这里,前台JSP页面上,我用struts的标签输出的。题目是数据库里随机读取出来的,每组radio值不同,现在碰到的问题是,我该怎么从action里把前台这些radio组选择的值取到,不然没法评判对错额。谢谢了,请教各位大神,帮忙支个招。题目生成的页面是这么写的
<form method="post" action="exam.action" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone);">
<div class="pageFormContent" layoutH="56">
<s:iterator value="multiples" status="index" >
<table>
<tr>
<td><s:property value="#index.index+1"/>.<s:property value="topic"/></td>
</tr>
<tr>
<td><label for="<s:property value='mid'/>1"><input id="<s:property value='mid'/>1" name="<s:property value='mid'/>" type="radio" value="<s:property value='optiona'/>"/><s:property value="optiona"/></label></td>
</tr>
<tr>
<td><label for="<s:property value='mid'/>2"><input id="<s:property value='mid'/>2" name="<s:property value='mid'/>" type="radio" value="<s:property value='optionb'/>" /><s:property value="optionb"/></label></td>
</tr>
<tr>
<td><label for="<s:property value='mid'/>3"><input id="<s:property value='mid'/>3" name="<s:property value='mid'/>" type="radio" value="<s:property value='optionc'/>" /><s:property value="optionc"/></label></td>
</tr>
<tr>
<td><label for="<s:property value='mid'/>4"><input id="<s:property value='mid'/>4" name="<s:property value='mid'/>" type="radio" value="<s:property value='optiond'/>" /><s:property value="optiond"/></label></td>
</tr>
</table>
</s:iterator>
</div>读数据库类
public List show(int sum) {
String sql = "select * From multiple Order By rand() Limit " + sum;
Session mysession = HibernateUtil.getSession();
Transaction tx = mysession.beginTransaction();
Query q = mysession.createSQLQuery(sql).addEntity(Multiple.class);
List multipleList = q.list();
tx.commit();
mysession.close();
return multipleList;
}处理的action
public String show(){
ExampapaermakeDaoImpl exampapaermakeDaoImpl = new ExampapaermakeDaoImpl();
multiples = exampapaermakeDaoImpl.show(10);
return SUCCESS;
}Struts数据库Javaradio
<form method="post" action="exam.action" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone);">
<div class="pageFormContent" layoutH="56">
<s:iterator value="multiples" status="index" >
<table>
<tr>
<td><s:property value="#index.index+1"/>.<s:property value="topic"/></td>
</tr>
<tr>
<td><label for="<s:property value='mid'/>1"><input id="<s:property value='mid'/>1" name="<s:property value='mid'/>" type="radio" value="<s:property value='optiona'/>"/><s:property value="optiona"/></label></td>
</tr>
<tr>
<td><label for="<s:property value='mid'/>2"><input id="<s:property value='mid'/>2" name="<s:property value='mid'/>" type="radio" value="<s:property value='optionb'/>" /><s:property value="optionb"/></label></td>
</tr>
<tr>
<td><label for="<s:property value='mid'/>3"><input id="<s:property value='mid'/>3" name="<s:property value='mid'/>" type="radio" value="<s:property value='optionc'/>" /><s:property value="optionc"/></label></td>
</tr>
<tr>
<td><label for="<s:property value='mid'/>4"><input id="<s:property value='mid'/>4" name="<s:property value='mid'/>" type="radio" value="<s:property value='optiond'/>" /><s:property value="optiond"/></label></td>
</tr>
</table>
</s:iterator>
</div>读数据库类
public List show(int sum) {
String sql = "select * From multiple Order By rand() Limit " + sum;
Session mysession = HibernateUtil.getSession();
Transaction tx = mysession.beginTransaction();
Query q = mysession.createSQLQuery(sql).addEntity(Multiple.class);
List multipleList = q.list();
tx.commit();
mysession.close();
return multipleList;
}处理的action
public String show(){
ExampapaermakeDaoImpl exampapaermakeDaoImpl = new ExampapaermakeDaoImpl();
multiples = exampapaermakeDaoImpl.show(10);
return SUCCESS;
}Struts数据库Javaradio
后台对应下,那么怎么会取不到值呢?
我的id是编号加选项编号,这么做的目的是和 <lable>标签绑定,在用的时候,点文字同样可以选中radio所以ID不能重复呀,不然点一下就把所有的那个选项都关联上了。至于name,需要区分radio分组,就不更不能一样了哇?随机出题的数量是后台指定的,不是固定的,只能是动态生成噢。
我的id是编号加选项编号,这么做的目的是和 <lable>标签绑定,在用的时候,点文字同样可以选中radio所以ID不能重复呀,不然点一下就把所有的那个选项都关联上了。至于name,需要区分radio分组,就不更不能一样了哇?随机出题的数量是后台指定的,不是固定的,只能是动态生成噢。O,那可以用js直接筛选选中的radio,然后把对应的值传过去。
我的id是编号加选项编号,这么做的目的是和 <lable>标签绑定,在用的时候,点文字同样可以选中radio所以ID不能重复呀,不然点一下就把所有的那个选项都关联上了。至于name,需要区分radio分组,就不更不能一样了哇?随机出题的数量是后台指定的,不是固定的,只能是动态生成噢。O,那可以用js直接筛选选中的radio,然后把对应的值传过去。额,我不会的就是,前台把对应的值传过来,后台怎么接收?我不能预先知道名字啥,也不能对应生成get set方法哇。。
然后获取radio值了啊
我的id是编号加选项编号,这么做的目的是和 <lable>标签绑定,在用的时候,点文字同样可以选中radio所以ID不能重复呀,不然点一下就把所有的那个选项都关联上了。至于name,需要区分radio分组,就不更不能一样了哇?随机出题的数量是后台指定的,不是固定的,只能是动态生成噢。O,那可以用js直接筛选选中的radio,然后把对应的值传过去。额,我不会的就是,前台把对应的值传过来,后台怎么接收?我不能预先知道名字啥,也不能对应生成get set方法哇。。action只要能接收到选中的radio值就可以了,提交前可以把所有选中的值拼成字符串,最后传到action就可以了吧
我的id是编号加选项编号,这么做的目的是和 <lable>标签绑定,在用的时候,点文字同样可以选中radio所以ID不能重复呀,不然点一下就把所有的那个选项都关联上了。至于name,需要区分radio分组,就不更不能一样了哇?随机出题的数量是后台指定的,不是固定的,只能是动态生成噢。O,那可以用js直接筛选选中的radio,然后把对应的值传过去。额,我不会的就是,前台把对应的值传过来,后台怎么接收?我不能预先知道名字啥,也不能对应生成get set方法哇。。action只要能接收到选中的radio值就可以了,提交前可以把所有选中的值拼成字符串,最后传到action就可以了吧
谢谢,如果没其他办法,我也只能这么试试了额。。有没有类似 request.(form) 把整个表单数据拿过来的办法。
asp或者jsp可以根据表单名字把整个表单取回来,返回一个数组
asp或者jsp可以根据表单名字把整个表单取回来,返回一个数组struts2比较依赖set,get
asp或者jsp可以根据表单名字把整个表单取回来,返回一个数组struts2比较依赖set,get我用request实现了。。感谢帮助。。
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;public class ContrastPaperAction extends BaseAction {
private String message; public String show() {
HttpServletRequest request = ServletActionContext.getRequest();
Map<String, Object[]> keyMap = new HashMap<String, Object[]>();
keyMap = request.getParameterMap();
Iterator<Entry<String,Object[]>> it2 = keyMap.entrySet().iterator();
while (it2.hasNext()) {
Entry<String, Object[]> entry = it2.next();
System.out.println(entry.getKey()+","+entry.getValue()[0]);
}
message="表单数据获取测试";
return SUCCESS;
} public String getMessage() {
return message;
} public void setMessage(String message) {
this.message = message;
}
}
asp或者jsp可以根据表单名字把整个表单取回来,返回一个数组struts2比较依赖set,get我用request实现了。。感谢帮助。。
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;public class ContrastPaperAction extends BaseAction {
private String message; public String show() {
HttpServletRequest request = ServletActionContext.getRequest();
Map<String, Object[]> keyMap = new HashMap<String, Object[]>();
keyMap = request.getParameterMap();
Iterator<Entry<String,Object[]>> it2 = keyMap.entrySet().iterator();
while (it2.hasNext()) {
Entry<String, Object[]> entry = it2.next();
System.out.println(entry.getKey()+","+entry.getValue()[0]);
}
message="表单数据获取测试";
return SUCCESS;
} public String getMessage() {
return message;
} public void setMessage(String message) {
this.message = message;
}
}
en,不错
asp或者jsp可以根据表单名字把整个表单取回来,返回一个数组struts2比较依赖set,get我用request实现了。。感谢帮助。。
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;public class ContrastPaperAction extends BaseAction {
private String message; public String show() {
HttpServletRequest request = ServletActionContext.getRequest();
Map<String, Object[]> keyMap = new HashMap<String, Object[]>();
keyMap = request.getParameterMap();
Iterator<Entry<String,Object[]>> it2 = keyMap.entrySet().iterator();
while (it2.hasNext()) {
Entry<String, Object[]> entry = it2.next();
System.out.println(entry.getKey()+","+entry.getValue()[0]);
}
message="表单数据获取测试";
return SUCCESS;
} public String getMessage() {
return message;
} public void setMessage(String message) {
this.message = message;
}
}
不错!