情况是这样的,用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

解决方案 »

  1.   

    值不同,但是name总可以起的一样吧。
    后台对应下,那么怎么会取不到值呢?
      

  2.   

    生成出来是一组一组的radio,这些name都不是固定的额,我后台该怎么获取?每一题都是一组radio,name就是这些题目在数据库中的编号,随机从数据库取了,所以每次都不一样
      

  3.   

    你的id和name的其中之一可以设置为相同的,没必要都是动态的
      

  4.   


    我的id是编号加选项编号,这么做的目的是和 <lable>标签绑定,在用的时候,点文字同样可以选中radio所以ID不能重复呀,不然点一下就把所有的那个选项都关联上了。至于name,需要区分radio分组,就不更不能一样了哇?随机出题的数量是后台指定的,不是固定的,只能是动态生成噢。
      

  5.   


    我的id是编号加选项编号,这么做的目的是和 <lable>标签绑定,在用的时候,点文字同样可以选中radio所以ID不能重复呀,不然点一下就把所有的那个选项都关联上了。至于name,需要区分radio分组,就不更不能一样了哇?随机出题的数量是后台指定的,不是固定的,只能是动态生成噢。O,那可以用js直接筛选选中的radio,然后把对应的值传过去。
      

  6.   


    我的id是编号加选项编号,这么做的目的是和 <lable>标签绑定,在用的时候,点文字同样可以选中radio所以ID不能重复呀,不然点一下就把所有的那个选项都关联上了。至于name,需要区分radio分组,就不更不能一样了哇?随机出题的数量是后台指定的,不是固定的,只能是动态生成噢。O,那可以用js直接筛选选中的radio,然后把对应的值传过去。额,我不会的就是,前台把对应的值传过来,后台怎么接收?我不能预先知道名字啥,也不能对应生成get set方法哇。。
      

  7.   

    你"<s:property value='mid'/>里mid是可以获取值得吧!从后台传过来。后面参数1,2,3...可以根据list长度来确认啊。这样radio的name就不可以确认了。
    然后获取radio值了啊
      

  8.   


    我的id是编号加选项编号,这么做的目的是和 <lable>标签绑定,在用的时候,点文字同样可以选中radio所以ID不能重复呀,不然点一下就把所有的那个选项都关联上了。至于name,需要区分radio分组,就不更不能一样了哇?随机出题的数量是后台指定的,不是固定的,只能是动态生成噢。O,那可以用js直接筛选选中的radio,然后把对应的值传过去。额,我不会的就是,前台把对应的值传过来,后台怎么接收?我不能预先知道名字啥,也不能对应生成get set方法哇。。action只要能接收到选中的radio值就可以了,提交前可以把所有选中的值拼成字符串,最后传到action就可以了吧
      

  9.   


    我的id是编号加选项编号,这么做的目的是和 <lable>标签绑定,在用的时候,点文字同样可以选中radio所以ID不能重复呀,不然点一下就把所有的那个选项都关联上了。至于name,需要区分radio分组,就不更不能一样了哇?随机出题的数量是后台指定的,不是固定的,只能是动态生成噢。O,那可以用js直接筛选选中的radio,然后把对应的值传过去。额,我不会的就是,前台把对应的值传过来,后台怎么接收?我不能预先知道名字啥,也不能对应生成get set方法哇。。action只要能接收到选中的radio值就可以了,提交前可以把所有选中的值拼成字符串,最后传到action就可以了吧
    谢谢,如果没其他办法,我也只能这么试试了额。。有没有类似 request.(form) 把整个表单数据拿过来的办法。
      

  10.   

    页面可以提交整个表单,但你的action也只能一个一个的取吧
      

  11.   


    asp或者jsp可以根据表单名字把整个表单取回来,返回一个数组
      

  12.   


    asp或者jsp可以根据表单名字把整个表单取回来,返回一个数组struts2比较依赖set,get
      

  13.   


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

    }
      

  14.   


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

    }
    不错!