【问题标题】:Ternary operator in EL not working with new version of Tomcat-7EL 中的三元运算符不适用于新版本的 Tomcat-7
【发布时间】:2015-10-01 08:33:52
【问题描述】:

我们已将 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 一起使用。

【问题讨论】:

  • 您在控制台中遇到的异常或错误是什么?
  • 从来没有打算那样工作。该应用程序显然依赖于一个不起眼的 Tomcat 5.x 错误。摆脱&lt;%=%&gt; 并单独使用${ ... } 重试。此外,您是否注意到您找到的答案中没有一个示例包含&lt;%= ... %&gt;
  • @BalusC : 我会尽力让你知道...
  • @sᴜʀᴇsʜᴀᴛᴛᴀ :它没有抛出任何异常......但是它没有应用于表格行的css......
  • @BalusC : 我将部分修改为 rowTextId="${(userStatusTextCode == 'sd_user_status_barred') ? \"lightBlue\" : \"black\" }" rowTextClass="${(userStatusTextCode == 'sd_user_status_barred') ? \"smalli\" : \"small\" }" ....但是行的 css 仍然是黑色的...

标签: jsp tomcat7 el


【解决方案1】:

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

有一个方法 doEndTag() 有代码

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

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

把代码改成

cellId = getTable().rowTextId();

问题为我们解决了。

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

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

【讨论】:

    猜你喜欢
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 2023-04-08
    • 2012-10-08
    • 1970-01-01
    • 2014-10-02
    • 1970-01-01
    相关资源
    最近更新 更多