EL中的三元运算符不使用新版本的Tomcat-7

时间:2015-10-01 08:33:52

标签: jsp tomcat7 el

我们已将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%>'

以上代码行不适用于我。

我尝试改变它,如下所示,但它都不适用于我。

<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一起使用。

1 个答案:

答案 0 :(得分:0)

我们得到了解决方案。我们需要修改为此创建的自定义标记所编写的Java代码。

方法doEndTag()有代码

cellId = ((cellId == null) ? getTable().rowTextId() : cellId);

此代码返回固定的cellId并且没有更改。常数的排序。

将代码更改为

cellId = getTable().rowTextId();

问题已经解决了。

JSP方面没有任何问题。根据语法,它是正确的。更改将在JAVA方面完成,该方面正在为自定义标记执行。

我希望这会对某人有所帮助。解决方案可能没有帮助,但它可能会触发一个想法,至少要检查。