给定以下代码:
<%
java.util.Map map = new java.util.HashMap();
request.setAttribute("map", map);
map.put("a", "true");
map.put("b", "false");
map.put("c", "42");
%>
${not map.c}
${not map.c}
的输出是真实的。...此表达式是什么样的操作?为什么它的结果是真的?
规范说:
一单元非操作员 - {!,not} a
- 迫使a以布尔值,申请操作员
和
强迫布尔人
- 如果a为null或;&quot;
- 否则,如果a是布尔人,请返回
- 否则,如果a是字符串,而boolean.valueof(a)不会抛出异常,请返回
- 否则,错误
map.c
是字符串"42"
。Boolean.valueOf("42")
是false
,not
运算符应用于false
返回true
。