逻辑错误-JSP和Servlet

逻辑错误-JSP和Servlet,jsp,servlets,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: &l

我有一个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”)当用户回答其他问题时,它仅为最近显示的问题提供答案。它被保存为空白(不是“null”,它被保存为“”-空白),并且该问题也没有相应地保存。但是当用户回答最近的问题时,问题和答案都会被保存

我想这是因为一些逻辑错误…有人能帮我解决吗


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

在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
}

for(inti=1;i在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
}

for(int i=1;i这是因为您不能在多个输入类型中使用相同的名称。请尝试在您的输入名称后添加一些别名,如下面的shwon:

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



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

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



将提交按钮放在循环外,它会将所有字段值发送到您的Servelt

将提交按钮放在循环外,它会将所有字段值发送到您的Servelt

您需要唯一地命名所有
答案
文本元素。如果所有50个Q都在同一页上,还需要为页面保留单个
提交
按钮更正将关闭
输入
元素。@Aamir:请停止在建议的编辑中将非代码格式化为代码。框架/产品/库名称不是代码。只有代码是代码。您需要唯一地命名所有
答案
文本元素。如果所有50个Q都在同一页面上,请为页面保留单个
提交
按钮。再多一个更正将关闭
input
元素。@Aamir:请停止在建议的编辑中将非代码格式化为代码。框架/产品/库名称不是代码。只有代码是代码。这正在工作,但另一个问题出现了。.当用户输入第四个问题的答案时。.数据库存储前3条记录的空格。.我不想要这些记录空白记录..可能吗..?@JavaLearner1:我想,要回答这个问题,你需要显示你的数据库存储逻辑和
Servlet1
code.@JavaLearner1可能会刷新页面!!当你在页面上寻找第四个问题的答案时,前3条记录会回答吗?如果不是,那么你可以在服务器端检查null条件,如果回答null then不允许添加,但这取决于您的要求。@bmt我解决了这个问题,我刚刚编写了另一个代码来删除答案字段为空的所有行。谢谢!您的代码帮助我解决了核心问题这是可行的,但另一个问题出现了。.当用户输入第四个问题的答案时。.数据库为前3个记录存储空格rds..我不想要那些空白记录..有可能吗?@JavaLearner1:我想,要回答这个问题,你需要显示你的db存储逻辑和
Servlet1
code.@JavaLearner1可能会刷新页面!!当你在页面上寻找第四个问题的答案时,前三条记录会回答吗?如果没有,那么你要么检查服务器上的空条件如果答案为空,则不允许添加,但这取决于您的要求。@bmt我解决了这个问题,我刚刚编写了另一个代码来删除答案字段为空的所有行。谢谢!您的代码帮助我解决了核心问题