在Jsp中使用EL表达式调用String类的matches方法的问题

Posted 迟早要学就马上学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Jsp中使用EL表达式调用String类的matches方法的问题相关的知识,希望对你有一定的参考价值。

要做什么:匹配一个字符串,如果是小数点数字,就取整数;如果不是数字,就直接显示

先看正确实现:  

<c:set var="reg" value="d+.?d+" />
<c:if test="${expPerResult.matches(reg)}">
   数字
   <fmt:parseNumber integerOnly="true" value="${expPerResult}" />
</c:if>
<c:if test="${!expPerResult.matches(reg)}">
  非数字
   ${expPerResult}
</c:if>

之前的错误写法:

<c:if test="${expPerResult.matches(‘d+.?d+‘)}">  
  数字
  <fmt:parseNumber integerOnly="true" value="${expPerResult}" />
</c:if>
<c:if test="${!expPerResult.matches(‘d+.?d+‘)}">
  
非数字
  ${expPerResult}
</c:if>

后台异常内容:

  java.lang.IllegalArgumentException: The expression [${expPerResult.matches(‘d+.?d+‘)}] is not valid. Within a quoted String only [], [‘] and ["] may be escaped with [].

总结:在使用el表达式调用String的matches方法时,最好将正则表达式作为变量传入,原因如异常所示:表达式内要避免""。

以上是关于在Jsp中使用EL表达式调用String类的matches方法的问题的主要内容,如果未能解决你的问题,请参考以下文章

JSP中的pageContext隐式对象和EL表达式中的pageContext隐式对象的比较疑问

在jsp中使用el表达式通过键获得后台的一个map<Long,String>的值

JSP中EL表达式的应用

jsp中EL表达式获取数据

Spring Model存储值在jsp EL表达式中不能正确显示(原样显示)问题

Spring EL和资源调用