0

这可能是显而易见的,但我无法弄清楚。

为什么

<c:if test="<%= (aString!= null) && (!aString.equalsIgnoreCase(""))%>">

一直失败

<c:if test="<%=(aString!= null) && (aString.trim().length() > 0)%>">

工作正常吗?这些小脚本在 c:if 之外工作得很好,所以我想知道当我把它放在核心标签中时出了什么问题。例外就像

JSPG0055E: 无法从名称 [] 值 [))%] 创建 xml 属性 错误代码:500

4

2 回答 2

2

特定的错误是由这些双引号引起的。test他们过早地结束了属性的值。

然而,所有这一切都不是正确的方法。实际上,将“oldschool” scriptlet与“modern” taglibs 混合使用是错误的。根本不支持这种语法。您不能在 taglib 属性中使用scriptlet 。您应该${}在 taglib 属性中使用 EL——那些东西——。

前提aString是预先将其作为页面、请求、会话或应用程序范围的属性放置,例如

request.setAttribute("aString", aString);

那么这应该是为了检查是否aString不为空也不为空:

<c:if test="${not empty aString}">

也可以看看:

于 2013-01-05T03:13:30.693 回答
-4

您不能在 null 上使用 equalsIgnoreCase 并且不设置对象。为什么要使用 equalsIgnoreCase 检查字符串是否为空,这不是好方法。您的第一次检查 (=! null) 就足够了。

于 2013-01-05T03:00:47.053 回答