我的jsp打印'null'而不是null

时间:2013-09-19 09:11:00

标签: java jsp servlets oracle11g

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

我的数据库访问对象:

 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;
    }

我的Servlet:

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

我的Jsp:

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

我的显示如果该字段为空: My Display

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

5 个答案:

答案 0 :(得分:5)

你应该避免在JSP中使用scriplets。请改用JSTL和EL。

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

这是使用EL预先测试null的方法:

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

请注意,not empty会检查null和空字符串。

另见:

答案 1 :(得分:2)

你会尝试类似的东西:

<%=request.getAttribute("custempid") == null ? "" : request.getAttribute("custempid") %>

答案 2 :(得分:0)

你可以这样做

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

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

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

答案 3 :(得分:0)

getAttribute()方法返回Object

  

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

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

String.valueOf(Object obj)

  

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

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

答案 4 :(得分:0)

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

if(custempid==null)
 custempid="";