我只是意识到我无法使用JSTL set标记设置Integer值。我检查了其他帖子,但没有找到相关问题。
我的JSTL代码看起来像
<c:set var="endIndex"
value="${fn:length(offeredService) - fn:length(serviceHistory) - 1} lt 0 ? ${fn:length(offeredService)} : ${fn:length(offeredService) - fn:length(serviceHistory) - 1}"/>
我得到的错误是
javax.el.ELException: Cannot convert -1 lt 0 ? 0 : -1 of type class java.lang.String to class java.lang.Integer
我错过了什么?
答案 0 :(得分:1)
您是否只需要扩展大括号以便三元运算符实际评估?
<c:set var="endIndex"
value="${
(fn:length(offeredService) - fn:length(serviceHistory) - 1) < 0 ?
fn:length(offeredService)
: fn:length(offeredService) - fn:length(serviceHistory) - 1
}
"/>
实际上,三元运算符在执行块之外,所以它只是像文本一样对待。