EL 中的三元运算符不适用于 Tomcat-7 的新版本
Ternary operator in EL not working with new version of Tomcat-7
我们已将 tomcat 从版本 tomcat-5.5.15
迁移到 tomcat-7.0.62
。
下面的代码适用于 tomcat 的旧版本,即 tomcat-5.5.15
<%!
private final String
barredUserTextId = "lightBlue",
barredUserTextClass = "smalli";
%>
<summary:table summary='userlist' rowTextId='<%= "black,${userStatusTextCode}==sd_user_status_barred?"+barredUserTextId %>' rowTextClass='<%= "small,${userStatusTextCode}==sd_user_status_barred?"+barredUserTextClass%>'>
但是相同的代码不适用于新版本的 tomcat。
tomcat 的新版本(tomcat-7.0.62
)有问题的代码部分是
rowTextId='<%= "black,${userStatusTextCode}==sd_user_status_barred?"+barredUserTextId %>'
rowTextClass='<%= "small,${userStatusTextCode}==sd_user_status_barred?"+barredUserTextClass%>'
上面的代码行对我不起作用。
我试过如下更改它,但 none 对我有用。
<summary:table summary='userlist' rowTextId="<%= {userStatusTextCode} eq \"sd_user_status_barred\" ? \"lightBlue\" : \"black\" %>" rowTextClass="${userStatusTextCode eq \"sd_user_status_barred\" ? \"smalli\" : \"small\" }">
<summary:table summary='userlist' rowTextId='<%= ${userStatusTextCode} == "sd_user_status_barred" ? "black" : "lightBlue" %>' rowTextClass='<%= ${userStatusTextCode} == "sd_user_status_barred" ? "smalli" : "small" %>'>
<summary:table summary='userlist' rowTextId="<%= ${(userStatusTextCode == 'sd_user_status_barred') ? \"black\" : \"lightBlue\" %>" rowTextClass="<%= ${(userStatusTextCode} == 'sd_user_status_barred') ? \"smalli\" : \"small\" %>" >
<summary:table summary='userlist' rowTextId="${(userStatusTextCode == 'sd_user_status_barred') ? \"black\" : \"lightBlue\" }" rowTextClass="${(userStatusTextCode == 'sd_user_status_barred') ? \"smalli\" : \"small\" }" >
<summary:table summary='userlist' rowTextId="${(userStatusTextCode == 'sd_user_status_barred') ? 'lightBlue' : 'black' }" rowTextClass="${(userStatusTextCode == 'sd_user_status_barred') ? 'smalli' : 'small' }" >
我已经参考了一些链接并试过了
这里是引用的链接
How to write if else condition using ternary operator in jstl
http://www.javabeat.net/ternary-operator-in-jsp-2-0-expression-languageel/
Ternary operator in JSTL/EL
如何正确编写表达式以使其与 tomcat 一起工作 7.
我们找到了解决方案。我们需要修改为为此创建的自定义标签编写的 Java 代码。
有代码为
的方法 doEndTag()
cellId = ((cellId == null) ? getTable().rowTextId() : cellId);
此代码返回固定的 cellId,并且未更改。常量排序。
将代码更改为
cellId = getTable().rowTextId();
问题已为我们解决。
JSP这边没有问题。根据语法,这是正确的。更改将在为自定义标记执行的 JAVA 端完成。
我希望这对某人有所帮助。解决方案可能没有帮助,但至少可以触发一个想法来检查。
我们已将 tomcat 从版本 tomcat-5.5.15
迁移到 tomcat-7.0.62
。
下面的代码适用于 tomcat 的旧版本,即 tomcat-5.5.15
<%!
private final String
barredUserTextId = "lightBlue",
barredUserTextClass = "smalli";
%>
<summary:table summary='userlist' rowTextId='<%= "black,${userStatusTextCode}==sd_user_status_barred?"+barredUserTextId %>' rowTextClass='<%= "small,${userStatusTextCode}==sd_user_status_barred?"+barredUserTextClass%>'>
但是相同的代码不适用于新版本的 tomcat。
tomcat 的新版本(tomcat-7.0.62
)有问题的代码部分是
rowTextId='<%= "black,${userStatusTextCode}==sd_user_status_barred?"+barredUserTextId %>'
rowTextClass='<%= "small,${userStatusTextCode}==sd_user_status_barred?"+barredUserTextClass%>'
上面的代码行对我不起作用。
我试过如下更改它,但 none 对我有用。
<summary:table summary='userlist' rowTextId="<%= {userStatusTextCode} eq \"sd_user_status_barred\" ? \"lightBlue\" : \"black\" %>" rowTextClass="${userStatusTextCode eq \"sd_user_status_barred\" ? \"smalli\" : \"small\" }">
<summary:table summary='userlist' rowTextId='<%= ${userStatusTextCode} == "sd_user_status_barred" ? "black" : "lightBlue" %>' rowTextClass='<%= ${userStatusTextCode} == "sd_user_status_barred" ? "smalli" : "small" %>'>
<summary:table summary='userlist' rowTextId="<%= ${(userStatusTextCode == 'sd_user_status_barred') ? \"black\" : \"lightBlue\" %>" rowTextClass="<%= ${(userStatusTextCode} == 'sd_user_status_barred') ? \"smalli\" : \"small\" %>" >
<summary:table summary='userlist' rowTextId="${(userStatusTextCode == 'sd_user_status_barred') ? \"black\" : \"lightBlue\" }" rowTextClass="${(userStatusTextCode == 'sd_user_status_barred') ? \"smalli\" : \"small\" }" >
<summary:table summary='userlist' rowTextId="${(userStatusTextCode == 'sd_user_status_barred') ? 'lightBlue' : 'black' }" rowTextClass="${(userStatusTextCode == 'sd_user_status_barred') ? 'smalli' : 'small' }" >
我已经参考了一些链接并试过了
这里是引用的链接
How to write if else condition using ternary operator in jstl
http://www.javabeat.net/ternary-operator-in-jsp-2-0-expression-languageel/
Ternary operator in JSTL/EL
如何正确编写表达式以使其与 tomcat 一起工作 7.
我们找到了解决方案。我们需要修改为为此创建的自定义标签编写的 Java 代码。
有代码为
的方法 doEndTag()cellId = ((cellId == null) ? getTable().rowTextId() : cellId);
此代码返回固定的 cellId,并且未更改。常量排序。
将代码更改为
cellId = getTable().rowTextId();
问题已为我们解决。
JSP这边没有问题。根据语法,这是正确的。更改将在为自定义标记执行的 JAVA 端完成。
我希望这对某人有所帮助。解决方案可能没有帮助,但至少可以触发一个想法来检查。