Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
424 views
in Technique[技术] by (71.8m points)

jsp - Comparing numbers in EL expression does not seem to work

In JSP, I want to compare two variables

If I do:

<c:set var="pagerTotDisp" value="9"/>
<c:if test="${pagerTotDisp > 8}">
  <span>pagerTotDisp above 8</span>
</c:if>

It displays "pagerTotDisp above 8" as expected

<c:set var="TotalPages" value="10"/>
<c:if test="${TotalPages > 2}">
  <span>TotalPages above 2</span>
</c:if>

It displays "pagerTotDisp above 8" as expected

But then if I do

<c:set var="pagerTotDisp" value="9"/>
<c:set var="TotalPages" value="10"/>
<c:if test="${TotalPages < pagerTotDisp}">
  <span>This condition is not true. This text should not be displayed</span>
</c:if>

It displays "This condition is not true. This text should not be displayed".

What's going on? Is that JSP not being able to handle two variables in a same condition??

thanks

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You're hardcoding the value in the value attribute of <c:set>. The <c:set> treats the hardcoded values as String. EL is therefore also evaluating them as String. Lexicographically, 9 is greater than 10, because 9 is at a further numerical position than 1.

There are two ways to solve this:

  1. Set the value via an EL expression. It will be interpreted as Long instead of String.

    <c:set var="pagerTotDisp" value="${9}" />
    <c:set var="TotalPages" value="${10}" /> 
    
  2. Or, use <fmt:parseNumber>, which would be the only solution if you have those as String variables from elsewhere which you have no control over.

    <fmt:parseNumber var="pagerTotDisp" value="9" />
    <fmt:parseNumber var="TotalPages" value="10" />
    

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...