Java Else条件在我的JSP中似乎不起作用
我的一个JSP中有以下代码Java Else条件在我的JSP中似乎不起作用,java,jsp,if-statement,Java,Jsp,If Statement,我的一个JSP中有以下代码 <% if(rsmatches!=null){%> <table> <tr> <td class="captions">Match</td> <td> <select>
<% if(rsmatches!=null){%>
<table>
<tr>
<td class="captions">Match</td>
<td>
<select>
<%
while(rsmatches.next()){
%>
<option value="<%out.print(rsmatches.getString("matchid"));%>"><%out.print(rsmatches.getString("matchid"));%> - <%out.print(rsmatches.getString("team1name"));%> vs <%out.print(rsmatches.getString("team2name"));%></option>
<%}%>
</select>
</td>
</tr>
</table>
<%} else{%>
<h1>No Result</h1>
<%}%>
匹配
-vs
无结果
所以rsmatches是resultset,当它不为null时,它会像我期望的那样给出输出,但是当resultset没有结果时,它会显示没有值的下拉列表,而不是没有结果。我在哪里犯的错误?试试这个:
<% if( rsmatches != null && rsmatches.size() > 0 ) { %>
0){%>
试试这个:
<% if( rsmatches != null && rsmatches.size() > 0 ) { %>
0){%>
听起来好像rsmatches是空的(实例化的)而不是空的,这可以解释为什么else不触发。听起来好像rsmatches是空的(实例化的)not null,这可以解释为什么else不启动。您这样做是错误的。理想情况下,您不应该在JSP中包含与数据库相关的代码,JSP显示应用程序的糟糕设计和违反应用程序层
现在回答您的问题,即使没有使用查询获取的记录,ResultSet也永远不会为null
理想情况下,您不应该在JSP中包含与数据库相关的代码,JSP显示应用程序的糟糕设计和违反应用程序层 现在回答您的问题,即使没有使用查询获取的记录,ResultSet也永远不会为null
<% if(rsmatches!=null && rsmatches.next()){%>
<table>
<tr>
<td class="captions">Match</td>
<td>
<select>
<%
do{ //Change to do while since result set is already pointing to the first row coz of the statement in if loop
%>
<option value="<%out.print(rsmatches.getString("matchid"));%>"><%out.print(rsmatches.getString("matchid"));%> - <%out.print(rsmatches.getString("team1name"));%> vs <%out.print(rsmatches.getString("team2name"));%></option>
<%} while(rsmatches.next()) ;%>
</select>
</td>
</tr>
</table>
<%} else{%>
<h1>No Result</h1>
<%}%>
匹配
-vs
无结果
您试过这个吗
<% if(rsmatches!=null && rsmatches.next()){%>
<table>
<tr>
<td class="captions">Match</td>
<td>
<select>
<%
do{ //Change to do while since result set is already pointing to the first row coz of the statement in if loop
%>
<option value="<%out.print(rsmatches.getString("matchid"));%>"><%out.print(rsmatches.getString("matchid"));%> - <%out.print(rsmatches.getString("team1name"));%> vs <%out.print(rsmatches.getString("team2name"));%></option>
<%} while(rsmatches.next()) ;%>
</select>
</td>
</tr>
</table>
<%} else{%>
<h1>No Result</h1>
<%}%>
匹配
-vs
无结果
不要在JSP中迭代ResultSet
,也不要使用Scriptlet。你确定rsmatches为null,而不仅仅是一个空列表吗?@DilukshanMahendra JSP应该只有表示部分。与数据库相关的任务应该在一些后端Java类中完成。此外,Scriplets在近十年前就已经过时了。请使用JSTL标记库和EL.Don不要在JSP中迭代ResultSet
,也不要使用scriptlet。你确定rsmatches为null,而不仅仅是一个空列表吗?@DilukshanMahendra JSP应该只有表示部分。与数据库相关的任务应该在一些后端Java类中完成。此外,Scriplets在近十年前就已经过时了。使用JSTL标记库和EL.Oops,就可以了s没有.size()属性什么是rsmatches类?它是sql ResultsToops,没有.size()属性什么是rsmatches类?这是一个sql ResultsTwell thx,对于优秀的用户来说,你有很多选择。最快的是sandy.sk,其中chks表示null和“有行或数据”。根据你的经验,你也可以选择CuriousMinds产品。你的代码几乎相同,但你要检查的是一个集合,而不是结果集itself.将其分离到另一层会使您的代码具有可伸缩性且“耦合性”更低。好吧,thx对于优秀的SO,您有选择。最快的是sandy.sk,其中chks为null并“具有行或数据”。根据您的经验,您还可以选择CuriousMinds产品。您的代码将几乎相同,但您将检查集合,而不是结果集本身。将其分离到另一层会使代码具有可伸缩性和“更少耦合”。但正如其他人所提到的,在JSP中只有表示,在DAO层中拥有所有数据库活动总是更好的,但正如其他人所提到的,在将所有数据库活动放在DAO层中