Ste*_*hev 6 jsp jstl isnumeric
如何在JSTL中执行此简单检查(不扩展任何java类和其他JSP函数).我需要这样:
<c:if test="${fn:isNumeric()}">
... do something ...
</c:if>
Run Code Online (Sandbox Code Playgroud)
提前致谢.
如果您的环境支持在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>
Run Code Online (Sandbox Code Playgroud)
(我会留下减号-和数千和分数分隔符,以及.外部考虑因素,这些字符可能出现在技术上有效的数字中)
请注意,<c:set>在其正文中String使用表达式会隐式地将任何类型转换为使用String#valueOf().否则,对于非类型,matches()调用<c:if>将失败String.
如果你真的坚持
(不扩展任何java类和其他JSP函数)
然后你可以使用以下hack.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set var="x" value="8" />
<c:catch var="isNumber">
<c:set var="x" value="${x * 1}" />
</c:catch>
<c:if test="${isNumber == null}">
... do something ...
</c:if>
<c:if test="${isNumber != null}">
... do not do anything...
</c:if>
Run Code Online (Sandbox Code Playgroud)