JSP - 测验

时间:2009-04-02 08:58:05

标签: jsp

我正在开发一个测验模块。 我已将所有问题,选项和其他细节存储在一系列向量中。

我想向用户显示第一个问题,当他提交它时,第二个问题应该显示在页面上......依此类推...... 即在点击提交时,应该发生一个事件,使计数器增加,并显示向量数组中的值... 我该怎么做...

2 个答案:

答案 0 :(得分:0)

如果你不想重新加载页面,我会让你的JSP编写javascript来反映这些向量。例如,

Vector questions = <some Vector of Question objects>;
int size = questions.size();
%><script>
    var questions[] = new Array(<%= size %>);
<%
  for(int a =0; a < size; a++){
      Question myQ = (Question)questions.get(a);
      %>questions[<%= a %>] = '<%= myQ.getQuestionText() %>';<%
  }
%></script>

然后,你可以写一个onclick =“displayNextQuestion();”对于提交按钮,其中javascript函数将改变页面的HTML以显示下一个问题及其表单字段等。

答案 1 :(得分:0)

将当前步骤作为隐藏输入值传递。

E.g。在JSP中:

<input type="hidden" name="step" value="${step}">

在Servlet的doGet()中(已被调用以进行初始显示):

int step = 1;
Question firstQuestion = questionDAO.find(step);
request.setAttribute("step", step);
request.setAttribute("question", question);

和Servlet的doPost()(处理每个表单提交):

int currentStep = Integer.valueOf(request.getParameter("step"));
int nextStep = currentStep++;
Question nextQuestion = questionDAO.find(nextStep);
request.setAttribute("step", nextStep);
request.setAttribute("question", nextQuestion);

或者您也可以将“步骤”设置为问题的某个“id”,这样您就不需要为“step”设置额外的属性,但只需执行以下操作:

<input type="hidden" name="id" value="${question.id}">
祝你好运。