在这部分代码中:
try {
connection = DriverManager.getConnection(
connectionUrl + dbName, userId, password);
statement = connection.createStatement();
String sql = "SELECT text_pub, path_photo FROM publication,publier, consomateur WHERE publication.id_publication=publier.publication_id_publication AND publier.users_id_user=consomateur.code_bar AND consomateur.code_bar = "+idUser+" AND 'path_photo' IS NOT NULL AND 'text_pub' IS NOT NULL";
resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
%>
<tr bgcolor="#8FBC8F">
<td><%=resultSet.getString("text_pub")%></td>
<img src="images/<%=resultSet.getString("path_photo")%>" width="150" height="130"></td>
<%}
%>
我正在尝试从我的表中选择两个值,其中一些值可以为null,例如我可以为我的列text_pub创建一个值,而在我的列path_photo中没有值,反之亦然,以防万一我有text_pub并且没有path_photo,我想只显示text_pub,但问题是显示text_pub的值,但是还显示了path_photo的值为null。 PS:我知道像这样的处理在servlet中做得更好,但我真的想让它在jsp中运行。谢谢。
答案 0 :(得分:0)
在sql查询中添加IFNULL检查:
SELECT IFNULL(text_pub,DEFAULT("")), IFNULL(path_photo,DEFAULT("")) FROM publication,publier,...
或添加对resultSet.getString(..)
的返回值的检查String text = resultSet.getString("text_pub");
if (text==null) {
text = "";
}
修改强>
如果我有text_pub并且没有path_photo,我想显示 只有text_pub这个答案不包括这个
<%
while (resultSet.next()) {
String pub = resultSet.getString("text_pub");
if (pub==null) {
pub = "";
}
String photo = resultSet.getString("path_photo");
%>
<tr bgcolor="#8FBC8F">
<td><%= pub %></td>
<%
if (photo!=null) {
%>
<td><img src="images/<%=photo%>" width="150" height="130"></td>
<%
}
}
%>
答案 1 :(得分:0)
你在这里错了。这种事情在JSP中处理,而不是在servlet中处理,因为在视图中呈现内容的逻辑属于View(JSP)而不属于Controller(Servlet)。由于您正在使用scriptlet,因此应使用我知道像这样的处理在servlet中做得更好,但我真的想让它在jsp中运行。
if
句子来验证是否应显示图像:
while (resultSet.next()) {
%>
<tr bgcolor="#8FBC8F">
<td><%=resultSet.getString("text_pub")%></td>
<td>
<%
if (resultSet.getString("path_photo") != null) {
%>
<img src="images/<%=resultSet.getString("path_photo")%>" width="150" height="130">
<%
}
%>
</td>
</tr>
<%
}
%>
如果resultSet.getString("text_pub")
为null
:
while (resultSet.next()) {
if (resultSet.getString("text_pub") != null) {
%>
<tr bgcolor="#8FBC8F">
<td><%=resultSet.getString("text_pub")%></td>
<td>
<%
if (resultSet.getString("path_photo") != null) {
%>
<img src="images/<%=resultSet.getString("path_photo")%>" width="150" height="130">
<%
}
%>
</td>
</tr>
<%
}
}
%>
如果您碰巧以正确的方式编写代码并使用Servlet处理数据库中的数据检索,请在List<SomeEntity>
中填充数据,将此列表添加到请求属性中(可能名称为{{ 1}})并转发到所需的JSP,然后您可以使用JSTL来控制图像显示的流程:
"photoList"