我正在从数据库中读取一个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")%>"
我的显示如果该字段为空:
我的数据库是Oracle 11g,浏览器是FireFox。
答案 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时,它会调用
如果参数为null,则字符串等于“null”;否则,返回obj.toString()的值。
所以添加一个空检查/空字符串检查。或者现在没有人使用scriplets和Rohit建议电影使用表达语言,这让生活变得轻松
答案 4 :(得分:0)
它打印为null,因为字段值本身为NULL。如果查询返回空结果集,那么它将打印一个空白。如果要强制执行不同的行为,请添加自定义条件,如
if(custempid==null)
custempid="";