【问题标题】:Ternary Operator in JSP EL failsJSP EL 中的三元运算符失败
【发布时间】:2023-04-08 19:01:01
【问题描述】:

是否允许在三元运算符中嵌套 EL 表达式?

下面的表达式有什么问题?

<input class="text_field" type="text" name="receivedBy" id="receivedBy" style="width:250px;"  maxlength="64" value="${empty obj.val ? obj1.attr1.val ' ' obj2.attr1.val: obj3.val"}/>           

【问题讨论】:

    标签: java jsp jstl el


    【解决方案1】:

    您实际上并没有嵌套 EL 表达式(嵌套看起来像 ${foo${bar}baz} 这实际上是不可能的)。您正在尝试将 EL 结果连接为字符串。您不能以这种方式在 EL 中连接字符串。最好的办法是使用c:set 进行预设。

    <c:set var="obj1obj2val" value="${obj1.attr1.val} ${obj2.attr1.val}" />
    <input value="${empty obj.val ? obj1obj2val : obj3.val}" />           
    

    【讨论】:

    • 这是我最终采用的方法。显然,obj1 不存在。
    【解决方案2】:

    试试下面这个

    <input class="text_field" type="text" name="receivedBy" id="receivedBy" style="width:250px;"  maxlength="64" value="${empty obj.val ? obj1.attr1.val ' ' obj2.attr1.val: obj3.val } "/>     
    

    【讨论】:

    • 谢谢,但是大括号在代码中是闭合的。问题不在于支架。
    • @icarus obj1.attr1.val 和 obj2.attr1.val 之间的单引号是什么
    • 这应该是一个空白。但是删除它也仍然存在问题。
    猜你喜欢
    • 2021-03-22
    • 2013-01-07
    • 2014-10-02
    • 1970-01-01
    • 2018-10-31
    • 2011-05-23
    • 2012-06-18
    • 1970-01-01
    • 2016-08-20
    相关资源
    最近更新 更多