2015-12-30 81 views
1

我有一个50个问题的列表,并要求用户回答他选择的任何25个问题。我正在使用JSP和Servlet来达到这个目的。逻辑错误 - 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");它给了我回答仅显示最近的问题,当用户回答其他一些question..it被保存为空白(不是“空”它被保存为“” - 空的空间)此外问题也没有得到相应的保存。但是,当用户接听最近的问题,这两个问题,答案会保存..

我认为它是因为一些逻辑error..can谁能帮助我一个解决方案...

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

+0

您将需要唯一命名的所有'answer'文本元素。如果所有50个Q都在同一页面上,还要保留单个“提交”按钮页面。还有一个更正就是关闭'input'元素。 – pratikpawar

+0

@Aamir:请停止格式化非建议编辑中的代码。框架/产品/库名称不是代码。只有代码是代码。 – BalusC

回答

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 
} 

我希望这将帮助!

+0

这是工作,但另一个问题araised ..当用户输入第四个问题的答案..数据库存储前3个记录的空白..我不想要那些空白空间记录..它可能..? – JavaLearner1

+0

@ JavaLearner1:我想,要回答这个问题,你需要显示你的db存储逻辑和'Servlet1'代码。 –

+0

@ JavaLearner1可能页面正在刷新!前3个记录答案,而你在页面上的第四个问题的答案?如果不是,那么你要么检查服务器端的空条件,如果答案为空,则不允许添加,但这取决于您的要求。 – iMBMT

2

这是因为您不能使用多个输入类型具有相同的名称。试试你输入名字像下面shwon后追加一些别名:

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

认沽提交按钮出来的圈上它都将提交值发送到您的servelt