2

我正在从数据库中读取字符串值并通过 servlet 将其打印到 jsp 页面上。问题是如果数据库中的字段为空,则在 Jsp 上打印字符串“空”。如果数据库中的值为空,我需要有一个空白的编辑框。

我的数据库访问对象:

 public String getVerEmpId(retailcustomervergobean rcvb) {
        String var = "";
        custid = rcvb.getCustid();
        Connection conn;
        try {
            conn = db.getDbConnection();
            String sql = "select CUST_EMP_ID from retail_cif_master where cust_id = ?";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setString(1, custid.toUpperCase());
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                var = rs.getString("CUST_EMP_ID");
            }
        } catch (Exception asd) {
            System.out.println(asd.getMessage());
        }
        return var;
    }

我的小服务程序:

String custempid = rcvd.getVerEmpId(rcvb);
request.setAttribute("custempid", custempid);

我的 JSP:

name="custEmpId" readonly="true" value="<%=request.getAttribute("custempid")%>"

如果该字段为空,我的显示: 我的显示器

我的数据库是 Oracle 11g,浏览器是 FireFox。

4

5 回答 5

5

您应该避免在 JSP 中使用脚本。请改用 JSTL 和 EL。

您需要null在打印值之前测试字符串。当您尝试打印对象引用null时,该null引用将转换为"null"字符串。

null这是您使用 EL进行预测试的方式:

<c:out value="${not empty custempid ? custempid: ''}" />

请注意,这not empty将检查两者null和空字符串。

也可以看看:

于 2013-09-19T09:14:12.030 回答
2

你会尝试这样的事情:

<%=request.getAttribute("custempid") == null ? "" : request.getAttribute("custempid") %>
于 2013-09-19T09:14:30.810 回答
0

你可以这样做

String x=request.getAttribute("custempid");
if(x.equals("null"))
x=""

name="custEmpId" readonly="true" value="<%=x%>"

注意 使用 jstl/el 而不是使用 scriplets

于 2013-09-19T09:14:19.580 回答
0

getAttribute()方法返回 Object

包含属性值的 Object,如果属性不存在,则返回 null。

当您尝试将其直接转换为 String 时,它会调用

String.valueOf(对象 obj)

如果参数为空,则字符串等于“空”;否则,返回 obj.toString() 的值。

所以添加一个空检查/空字符串检查。或者现在没有人使用 scriplets 和 Rohit 建议的电影表达语言,这让生活变得轻松

于 2013-09-19T09:19:23.107 回答
0

它正在打印 null,因为字段值本身为 NULL。如果查询返回一个空结果集,那么它将打印一个空白。如果您想强制执行不同的行为,请添加一个自定义条件,例如

if(custempid==null)
 custempid="";
于 2013-09-19T09:25:15.963 回答