在jsp中查询中不显示空值

时间:2014-03-04 14:28:58

标签: java mysql jsp

在这部分代码中:

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中运行。谢谢。

2 个答案:

答案 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)

  

我知道像这样的处理在servlet中做得更好,但我真的想让它在jsp中运行。

你在这里错了。这种事情在JSP中处理,而不是在servlet中处理,因为在视图中呈现内容的逻辑属于View(JSP)而不属于Controller(Servlet)。由于您正在使用scriptlet,因此应使用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"