我的网站就像SO一样。在这个页面中,我试图在两个单独的表中检索已回答和未回答的问题。但在输出中,我得到的答案和未答复的问题都显示在已回答的问题表中。这里出了什么问题?我感谢所有的帮助和努力。这是我的代码: -
<%@page import="model.QuestionBean"%>
<%@page import="java.util.List"%>
<%@page import="model.QuestionDAO"%>
<%@page import="model.QuestionDAOFactory"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>All Questions</title>
</head>
<body>
<div>
<%
QuestionDAOFactory qdf=new QuestionDAOFactory();
QuestionDAO qd=qdf.createQuestionDAO();
List<QuestionBean> list=qd.getQuestions();
for (QuestionBean qb : list) {
%>
<%
if(qb.getIsAnswered().equalsIgnoreCase("Y"))
%>
<table style="width: 50%;height: 100%;border: 1px solid black;" align="">
<thead>
<tr>
<th>Answered Questions</th>
</tr>
</thead>
<tbody>
<%
{
%>
<tr><td><a href="viewQuestion.jsp?id=<%=qb.getQuestionId() %>"><%=qb.getQuestionText() %></a></td></tr>
<%
}
%>
</tbody>
</table>
<%
else
%>
<table style="width: 50%;height: 100%;border: 1px solid black;" align="">
<thead>
<tr>
<th>Unanswered Questions</th>
</tr>
</thead>
<tbody>
<%
{
%>
<tr><td><a href="viewQuestion.jsp?id=<%=qb.getQuestionId() %>"><%=qb.getQuestionText() %></a></td></tr>
<%
}
%>
</tbody>
</table>
<%
}
%>
</table>
</div>
</body>
</html>
答案 0 :(得分:1)
if-else语句的块看起来不正确。
尝试:
<%
if(qb.getIsAnswered().equalsIgnoreCase("Y")) {
%>
<table>
...
</table>
<%
} else {
%>
<table>
...
</table>
<%
}
%>
编辑:
在仔细阅读问题之后,似乎JSP中的逻辑是错误的。如果您希望在单独的表中显示已回答的未回答问题,则必须首先迭代所有已回答的问题并将它们放在一个表中,然后迭代所有未回答的问题并将它们放在第二个表中。例如,您可以通过两个循环来实现这一目标:
<table ...>
...
<%
for (QuestionBean qb : list) {
if(qb.getIsAnswered().equalsIgnoreCase("Y")) {
%>
... show answered question ...
<%
}
}
%>
</table>
<table ...>
...
<%
for (QuestionBean qb : list) {
if(!qb.getIsAnswered().equalsIgnoreCase("Y")) {
%>
... show unanswered question ...
<%
}
}
%>
</table>
或者您可以通过在getAnsweredQuestions()
课程中引入getUnAnsweredQuestions()
和QuestionDAO
来避免使用if语句。
您当前的逻辑似乎为每个问题创建一个单独的表。
答案 1 :(得分:1)
我认为问题出在你的if-else语句中。你的getter告诉我返回值是一个布尔值但是你做了一个字符串比较:
qb.getIsAnswered().equalsIgnoreCase("Y")
更改数据模型或调试此行的返回值。
请发布您的模特课。
答案 2 :(得分:0)
检查&#39; qb.getIsAnswered()&#39;的内容。它可能是&#39; Y&#39;总是
答案 3 :(得分:0)
存在一些问题:
如果你想要2个表,并且你坚持使用上面的API,那么你需要两个for循环来遍历返回的列表。一个循环将呈现已回答的问题,另一个回答未回答的问题。
这样的事情:
<%@page import="model.QuestionBean"%>
<%@page import="java.util.List"%>
<%@page import="model.QuestionDAO"%>
<%@page import="model.QuestionDAOFactory"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>All Questions</title>
</head>
<body>
<div>
<%
QuestionDAOFactory qdf=new QuestionDAOFactory();
QuestionDAO qd=qdf.createQuestionDAO();
List<QuestionBean> list=qd.getQuestions();
%>
<table style="width: 50%;height: 100%;border: 1px solid black;" align="">
<thead>
<tr>
<th>Answered Questions</th>
</tr>
</thead>
<tbody>
<%
for (QuestionBean qb : list) {
if(qb.getIsAnswered().equalsIgnoreCase("Y")) {
%>
<tr><td><a href="viewQuestion.jsp?id=<%=qb.getQuestionId() %>"><%=qb.getQuestionText() %></a></td></tr>
<%
}
}
%>
</tbody>
</table>
<table style="width: 50%;height: 100%;border: 1px solid black;" align="">
<thead>
<tr>
<th>Unanswered Questions</th>
</tr>
</thead>
<tbody>
<%
for (QuestionBean qb : list) {
if(!qb.getIsAnswered().equalsIgnoreCase("Y")) {
%>
<tr><td><a href="viewQuestion.jsp?id=<%=qb.getQuestionId() %>"><%=qb.getQuestionText() %></a></td></tr>
<%
}
}
%>
</tbody>
</table>
</div>
</body>
</html>