在我的JSP页面中,我从数据库中获取了双倍值。在scriptlet标记内,我正在初始化要使用的java变量,如下所示:
<body>
<%
Map<String, Double> colorMap = new HashMap<>();
colorMap = InsightDbConn.getInstance().getFpyRtyColorLimits();
double var_yellow = colorMap.get("fpy_yellow"); // storing 85
double var_green = colorMap.get("fpy_green"); // storing 93
%>
我需要使用这些值,以便根据我获得的值设置表格的行颜色。我正在使用CSS类来设置行颜色。但是为了定义该类值,我使用JSP的三元运算符来遍历从数据库获得的值。
以下是我的代码:
<c:forEach items="${fpyrtyDailyList}" var="entry">
<tr>
<td>${entry.category}</td>
<td>
<div class="${entry.percentage == 0 ? 'green' : entry.percentage < var_yellow ? 'red' : entry.percentage < var_green ? 'yellow' : 'green' }">
${entry.percentage}
</div>
</td>
<td>${entry.daily_date}</td>
<td>${entry.total_tests}</td>
<td>${entry.total_passed}</td>
</tr>
</c:forEach>
如上面的代码所示,我试图在scriptlet中定义的Java变量的帮助下设置CSS类的值。如果我使用数值,工作就完成了。这些值是动态的,可能会随着时间的推移而改变,所以我打算改用scriptlet变量。
有人可以告诉我哪里出错了。
编辑1 :我希望迭代循环中的CSS类值,以便每行根据它拥有的值获得自己的行颜色
答案 0 :(得分:0)
首先,您必须创建一个具有以 percentage 接收的值的变量,然后使用该变量以三元运算符获取该值。下面是示例。
<c:set var="entryPercentage" value="${entry.percentage}"/>
<div class="${entryPercentage == 0 ? 'green' : entryPercentage < var_yellow ? 'red' : entryPercentage < var_green ? 'yellow' : 'green' }">