Jsp EL中的三元运算符不适用于新版Tomcat-7

Jsp EL中的三元运算符不适用于新版Tomcat-7,jsp,tomcat7,el,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' rowTextI

我们已经将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%>'>
以上代码行对我不起作用

我试着像下面那样改变它,但没有一个对我有效

<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' }" >

我已经参考了一些链接并尝试了它

这里是参考链接


如何正确编写表达式,使其与tomcat 7配合使用。

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

有一个方法doEndTag()包含以下代码

cellId = ((cellId == null) ? getTable().rowTextId() : cellId);
此代码正在返回固定的cellId,并且没有更改。有点像常数

将代码更改为

cellId = getTable().rowTextId();
这个问题为我们解决了

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


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

您在console中遇到的异常或错误是什么?这绝不是为了这样工作。该应用程序显然依赖于一个晦涩难懂的Tomcat5.x bug。摆脱
并单独使用
${…}
重试。此外,你没有注意到你找到的答案中没有一个例子包含
?@BalusC:我会尽量让你知道…@sᴜʀᴇsʜᴀᴛᴛᴀ : 它没有引发任何异常…但是css没有应用到表的行。@BalusC:I将该部分修改为rowTextId=“${(userStatusTextCode=='sd\u user\u status\u barred')?\'lightBlue\':\'black\'}”rowTextClass=“${(userStatusTextCode='sd\u user\u status\u barred')?\'smalli\':'small\'}”…但行的css仍然是黑色的。。。
cellId = getTable().rowTextId();