我正在开发一个测验模块。 我已将所有问题,选项和其他细节存储在一系列向量中。
我想向用户显示第一个问题,当他提交它时,第二个问题应该显示在页面上......依此类推...... 即在点击提交时,应该发生一个事件,使计数器增加,并显示向量数组中的值... 我该怎么做...
答案 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}">
祝你好运。