写法一:
<%
if(jbpmMgr.getTaskStringVaviable(task.getId(),"tran_desc")!=null &&!jbpmMgr.getTaskStringVaviable(task.getId(),"tran_desc").equals(""))
{
out.print("("+jbpmMgr.getTaskStringVaviable(task.getId(),"tran_desc")+")");
}
%>
写法二:
<%if(jbpmMgr.getTaskStringVaviable(task.getId(),"tran_desc")!=null && !jbpmMgr.getTaskStringVaviable(task.getId(),"tran_desc").equals(""))
{ %>
(<%=jbpmMgr.getTaskStringVaviable(task.getId(),"tran_desc")%>)
<%} %>
开始用的写法一,结果是null也会输出,就改成了写法二,说不出为啥要改成这样,结果是null不会输出,求原理
你直接这么试一下就知道 if 对 <%=> 起不起作用了:
[code="java"]
if(false) {
<%=jbpmMgr.getTaskStringVaviable(task.getId(),"tran_desc")%>
}
[/code]
。。。。。。吐血
只能说是处理规则不一样吧。第一种就好像:
[code="java"]
System.out.println("" + someObject);
[/code]
当 someObjeft 为 null的时候,应该打印什么呢?空字串还是 null ?当然是 null.
[quote]我说错了 开始用的写法二 是null的时候还会输出 改为写法一就可以了 为什么if对 <%=%> 没起作用 [/quote]
看来我也理解去了,我一直以为是我说的那种情况的。
你的第二种方法中,输出null的同时 "(" 和 ")"会输出么?
加一个
!(jbpmMgr.getTaskStringVaviable(task.getId(),"tran_desc").equals("null"))
因为直接!=null是判断引用是否为空,而你没有判断是否是字符串的"null"
也就说你本来的值不为null而是为"null"
我之前也没有注意到这点呢