三元运算符未按预期工作
Ternary operator is not working as expected
在我的代码中,我通过 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 代码,它将检查 language
并相应地显示内容。
<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
。无论如何,这不会按预期工作。我没有得到任何东西。但是在我的 alert
中,它正确地将 language
显示为 si
。
我该如何解决这个问题?
假设 ${language}
值输出到服务器端的源,那么您需要将其用引号括起来以使 Javascript 语法正常工作。试试这个:
var optionText = '${language}' === 'si' ? item.sinhalaName : item.productName;
$dropdown.append($("<option />", {
value: item.idproduct,
text: optionText
});
在我的代码中,我通过 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 代码,它将检查 language
并相应地显示内容。
<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
。无论如何,这不会按预期工作。我没有得到任何东西。但是在我的 alert
中,它正确地将 language
显示为 si
。
我该如何解决这个问题?
假设 ${language}
值输出到服务器端的源,那么您需要将其用引号括起来以使 Javascript 语法正常工作。试试这个:
var optionText = '${language}' === 'si' ? item.sinhalaName : item.productName;
$dropdown.append($("<option />", {
value: item.idproduct,
text: optionText
});