javascript - 三元运算符未按预期工作

标签 javascript java jquery servlets jstl

在我的代码中,我通过 JSTL 设置一个名为 language 的变量。我就是这样做的。

<%@ page pageEncoding="UTF-8" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@taglib prefix="c" uri= "http://java.sun.com/jsp/jstl/core" %>
<c:set var="language" value="${not empty param.language ? param.language : not empty language ? language : pageContext.request.locale}" scope="session" />
<fmt:setLocale value="${language}" />
<fmt:setBundle basename="text" />

我有一个 JQuery 代码,它将检查语言并相应地显示内容。

<script >
    $(function() {
        $('#SelecttheCategory').on('change', function() {
            alert("${language}");
            val = $(this).val();

            $.get("DynamicPopProductList?categoryID=" + val, function(responseJson) {

                var $dropdown = $("#Selecttheproducts");
                $dropdown.empty();

                $.each(responseJson, function(index, item) {
                    $dropdown.append($("<option />").val(item.idproduct).text($ {
                        language
                    } == 'si' ? item.sinhalaName : item.productName));
                });

            });
        });
    }); 
</script>

如果语言是sinhala,我需要显示item.sinhalaName,如果不是,我将显示item.productName。无论如何,这并没有按预期工作。我什么也没得到。但是在我的警报中,它正确地将语言显示为si

我该如何解决这个问题?

最佳答案

假设 ${language} 值输出到服务器端的源,那么您需要将其用引号括起来,以便 Javascript 语法正常工作。试试这个:

var optionText = '${language}' === 'si' ? item.sinhalaName : item.productName;
$dropdown.append($("<option />", {
  value: item.idproduct,
  text: optionText
});

关于javascript - 三元运算符未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57313235/

相关文章:

javascript - 如何将使用 php 上传的 pdf 文件和图像文件合并到 MySQL 中?

java - 多线程环境下Executor Service清除map值

javascript - Rails 4 - 用于具有简单形式的依赖字段的 JS

javascript - Highstock 如何确定日期

Javascript - 仅当输入值大于 999 时才显示 div

java - 使用 servlet 在登录页面本身显示密码错误消息

javascript - 传单更新标记只要显示就会消失

javascript - 带有 React 的 Rabbit-MQ

java - 为什么 C++ 中的整数数组搜索循环比 Java 慢?

java - 如何从服务器获取对象数组