一尘不染

如何在JSTL中检查isNumeric / isNumber?

jsp

如何在JSTL中进行此简单检查(不扩展任何Java类和其他JSP函数)。我需要这样:

<c:if test="${fn:isNumeric()}">
    // do something
</c:if>

提前致谢。


阅读 265

收藏
2020-06-08

共1个答案

一尘不染

如果您的环境支持在EL对象上调用非getter方法的新EL 2.2功能(在所有与Servlet 3.0兼容的容器中可用,例如Tomcat
7,Glassfish
3等),那么您可以String#matches()直接在EL中使用该方法。

<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

2020-06-08