场景描述:根据后台传入的值(value是否大于0)决定是否跳转(跳转地址vid-*)
备注:*为后台传入的value
.解决方案:
第一种方案:jstl
使用
<c:choose> <c:when test="${value > 0}"> <a href="vid-${value}" class="photo" target="_blank"> href </a></c:when> <c:otherwise> <a href="javascript:void(0);" class="photo" target="_blank"> href </c:otherwise> </c:choose>
使用jstl表达式来完成
第二种方案:el表达式+三目运算符
很显然使用第一种方式代码很臃肿,代码量太高
所以考虑能否使用el表达式中的三目运算符来解决这个问题
代码如下
<a href="${value > 0 ? 'vid-'+value : ''}; "
发现会报错 原因是三目运算符中不支持字符串的加减,只支持数字间的逻辑运算
这样就比较尴尬了;
第三种方案:将逻辑转移到js文件当中 将videoId传入js中进行处理判断
js代码如下
function redirectUrl(value){ if(value > 0) { window.location.href = "vid-"+value; } }
jsp代码如下
<a href="javascript:redirectUrl(${ value}); "
使用这种方案就解决了第二种方法不能够处理的问题
总结:有时候思路转变一下 就会得到一种比较合理的解决方案
网友评论