我有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)此外,问题也没有得到相应的保存。但是当用户回答最近的问题时,问题和答案都会被保存。
我认为这是因为某些逻辑错误..任何人都可以帮我解决问题......
我想在数据库中保存问题和答案,无论用户回答哪个问题。
答案 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