日期:2014-05-17  浏览次数:20744 次

struts开发考试系统怎么将作完的试卷提交/??
将试题放入集合显示在页面,现在面临的问题是:作完之后怎么提交呢,试卷为单选题,每一个题为一组单选框,单选框的的name应该如何指定?或者怎么全体提交,求大神指导思路

------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

以面向对象的思维。把试题,提交的答案,正确答案,供选择的答案都看做一个对象的属性。

//试题javabean
public class Questions{
  private Integer id;
  private String title;
  private String submitAnswer;//考生提交的答案标识(例如"A","B","C")
  private String correctAnswer;//正确答案的标识(例如"A")
  private List<Answer> alternativeAnswers;//供考生选择的答案标识
  setter,getter;//set,get方法
}
//供选择的答案javabean
public class Answer{
   private String sign;//答案标识("A","B","C")
   private String remark;//答案中文内容
   setter,getter;
}
//action代码
public Action extends ActionSupport{
  private List<Questions> list;//显示给页面的试题
  private List<Questions> submitList;//提交的试题与提交的答案
  setter,getter;
}
//action直接把这个javabean的试题作为集合输出到页面例如试题集合为list
//提交的时候也等于把整个submitList集合重新提交回去不同的是里面多了试题的提交答案
//后面你就可以在submitList里面就是所有提交的试题和答案了
<form>
<s:iterator value="list" var="questions" status="st">//迭代显示试题
<div>
//提交时对应试题填入对应试题的id,为了服务端能比对,对应试题的答案是否正确
  <input type="hidden" name="submitList.id" value="questions.id"/>
  ${questions.title}//题目
//迭代此题目供选择的答案
  <s:iterator value="questions.alternativeAnswers" var="answer">
    <input type="radio" name="submitList.submitAnswer" value="${answer.sign}"/>${answer.remark}
  </s:iterator>
</div>
</s:iterator>
<input type="submit" value="提交"/>
</form>


 一张试卷有很多题目,33行代码中 每一题的name属性都相同?应该是每一题都得有不同的name属性吧?
radio 是按照name分组的呀。

name当然要不同,我这里手写的,在name上没写全每个name上加入${st.index}这样就可以了
  <input type="hidden" name="submitList${st.index}.id" value="questions.id"/>
<input type="radio" name="submitList${st.index}.submitAnswer" value="${answer.sign}"/>${answer.remark}