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
任意のヒントをいただければ幸いです。それはあまり面倒だ変数設定するときに式を使用する場合は
を、あなたは> GTを試してみました(より大きい)の代わりにことがありますか? b gtのように?また、http://www.javatips.net/blog/jstl-less-than-greater-than –
はい、私は試してみましたが、いずれも動作しませんでした..また、他の人が見ることができるように質問のコードを更新しました同様に..返信ありがとう –