Jsp EL中的三元运算符不适用于新版Tomcat-7
我们已经将tomcat从版本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-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();