逻辑错误 - JSP和Servlet

时间:2015-12-30 05:18:10

标签: jsp servlets

我有50个问题的清单,并要求用户回答他选择的任何25个问题。我正在使用JSP和Servlet来实现此目的。

这是我的代码:

<form action="Servlet1" method="post">

<%List questions = new ArrayList(); // This list has 50 questions

for(int i=1; i<questions.size(); i++)
 { %>
     Question Number: <% out.println(i); %><br><br>

     <%=questions.get(i)%><br><br>

     Answer:
     <input type="hidden" name="question" value="<%=questions.get(i) %>">
     <input type="text" name="answer"> <br><br>
     <input type="submit" value="submit" name="submit">
<% } %>

但是在Servlet中,当我使用request.getParameter("answer");时,它只给出了我最近显示的问题的答案,当用户回答其他问题时......它被保存为空白(不是&#34; null&#34 ;它被保存为&#34;&#34; -empty space)此外,问题也没有得到相应的保存。但是当用户回答最近的问题时,问题和答案都会被保存。

我认为这是因为某些逻辑错误..任何人都可以帮我解决问题......

我想在数据库中保存问题和答案,无论用户回答哪个问题。

3 个答案:

答案 0 :(得分:3)

在html中,每个元素都是通过名称或ID来标识的。但它必须是独一无二的。 这段代码在问题上循环,并且每次都为文本输入定义answer的相同名称。 所以它不会创建另一个但覆盖前一个文本。 因此,您必须使用i其他方法来使其像

一样独特
 <input type="text" name="answer<%=i>"> <br><br>

你可以在服务器端获得

for(int i=1; i<questions.size(); i++)
{
    String answer= request.getParameter("answer"+i)
    //add logic here
}

我希望这会有所帮助!!

答案 1 :(得分:2)

这是因为您不能使用多种输入类型的同名。尝试在输入名称后附加一些别名,如下面的shwon:

<input type="text" name="answer_<%=i>"> <br><br>

答案 2 :(得分:0)

将提交按钮放在循环旁边,它会将所有归档值发送到您的Servelt