如何在JSTL中进行此简单检查(不扩展任何Java类和其他JSP函数)。我需要这样:
<c:if test="${fn:isNumeric()}"> // do something </c:if>
提前致谢。
如果您的环境支持在EL对象上调用非getter方法的新EL 2.2功能(在所有与Servlet 3.0兼容的容器中可用,例如Tomcat 7,Glassfish 3等),那么您可以String#matches()直接在EL中使用该方法。
String#matches()
<c:set var="numberAsString">${someExpressionToTestForNumber}</c:set> <c:if test="${numberAsString.matches('[0-9]+')}"> It's a number! </c:if>
(我将减号-,千位和小数分隔符,以及.外部考虑因素保留为可能出现在技术上有效的数字中的字符)
-
,
.
请注意,<c:set>带有 主体 表达式的with 会将任何类型隐式转换为Stringusing String#valueOf()。否则,非类型的matches()呼叫<c:if>将失败String。
<c:set>
String
String#valueOf()
matches()
<c:if>