2016-09-22 8 views
-1

Tomcat 6からTomcat 8.0.32へのアップグレード以来、私は奇妙な動作をしています。EL関係演算子をTomcat 8/JSTL 1.2で動作させる方法

関係演算子(<、>、< =、> =)はCで定義された変数で作業されていませんが:以下

public class ServiceConstants { 
    public static final Integer MY_CONST = 15; 
} 

を設定(更新)私のコードです:

<%@ page isELIgnored="false"%> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<c:set var="a" value="<%=ServiceConstants.MY_CONST%>"/> 
<c:set var="b" value="${127}" /> 
<html> 
<body> 
<br/>a: ${a} 
<br/>b: ${b} 
<br/>Using variables {b > a}: ${b > a} 
<br/>Using variables {b gt a}: ${b gt a} 
<br/>Hardcoded values {127 > 15}: ${127 > 15} 
</body> 
</html> 

そして、以下はレンダリングされるものです

a: 15 
b: 127 
Using variables {b > a}: false 
Using variables {b gt a}: false 
Hardcoded values {127 > 15}: true 

aとbをc :それは間違った答えを返す設定します。

以下

は私のweb.xmlファイル

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    version="3.0" metadata-complete="true"> 

    <absolute-ordering /> 

    <distributable/> 

    <display-name>App name</display-name> 

    <jsp-config> 
    <taglib> 
     <taglib-uri>http://xyzo.org/app</taglib-uri> 
     <taglib-location>/WEB-INF/tld/app.tld</taglib-location> 
    </taglib> 
    </jsp-config> 
</web-app> 

である私は、web.xmlファイルのヘッダと、このような変更を、Tomcatの8.0.37(最新)に変更し、掲載いくつかのソリューションを試してみました。

ご迷惑をおかけして申し訳ありません。 BELOW

EDIT:

私は数字がELによって文字列として解釈されていることが判明しました。 私は強制的に強制的に動作しますが、扱いにくいようです。

<%@ page isELIgnored="false"%> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<c:set var="a" value="<%=ServiceConstants.MY_CONST%>"/> 
<c:set var="b" value="${127}" /> 
<html> 
<body> 
<br/>a: ${a} 
<br/>b: ${b} 
<br/>Using variables {b > a}: ${b > a} 
<br/>Using variables {b gt a}: ${b gt a} 
<br/>Hardcoded values {127 > 15}: ${127 > 15} 
<br/>... 
<br/>Forcing cohersion 
<br/>Using variables {b > (0 + a)}: ${b > (0 + a)} 
</body> 
</html> 

これは、結果:まだ「正しいこと」を行うにはELを作成する方法について

a: 15 
b: 127 
Using variables {b > a}: false 
Using variables {b gt a}: false 
Hardcoded values {127 > 15}: true 
... 
Forcing cohersion 
Using variables {b > (0 + a)}: true 

任意のヒントをいただければ幸いです。それはあまり面倒だ変数設定するときに式を使用する場合は

+0

を、あなたは> GTを試してみました(より大きい)の代わりにことがありますか? b gtのように?また、http://www.javatips.net/blog/jstl-less-than-greater-than –

+0

はい、私は試してみましたが、いずれも動作しませんでした..また、他の人が見ることができるように質問のコードを更新しました同様に..返信ありがとう –

答えて

1

は:

<c:set var="a" value="${15}"/> 
<c:set var="b" value="${127}" /> 
+0

チップのおかげで。残念ながら、上記の編集質問としてスクリプトレットを使用してJavaクラスからInteger値を取得しているので、これはうまくいきません。 –

関連する問題