[英]Super Simple JSP Javascript Question
如果字符串超過一定長度,我將把它截斷。 我對jsp非常陌生,所以我用我知道的唯一方法來做。 我有一些JavaScript,將使用截斷的字符串創建一個新的var。 我需要在html中使用此新的displayTag字符串。 但是,我意識到我不能在腳本標簽之外使用該var。 我該如何實現?
<script type="text/javascript">
var displayTag = "${example.name}";
if(displayTag.length > 15) {displayTag=displayTag.substring(0,15)+"..."};
alert(displayTag); // for testing
</script>
<a href="some_link"><c:out value=displayTag/></a> // I know this line will not actually work
fn:substring
和fn:length
可能正是您所追求的。
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<c:choose>
<c:when test="${fn:length(example.name) > 15}">
${fn:substring(example.name, 0, 15)}...
</c:when>
<c:otherwise>
${example.name}
</c:otherwise>
</c:choose>
您的${example.name}
是使用JSP變量的EL表達式; displayTag
是一個Javascript變量,因此您可以說<c:out value=displayTag/>
不起作用,因為<c:out ...>
在頁面發送到瀏覽器之前在服務器上運行,因此javascript變量甚至不存在。
我更喜歡在服務器上執行這種操作,因此即使Javascript關閉或由於錯誤而失敗,它也可以正常工作。
EL表達式可以做到這一點
${fn:length(example.name) <= 15 ? example.name : fn:substring(example.name, 0, 15) + '...'}
(我沒有測試過)
+
運算符不適用於EL中的字符串連接,並且標准JSTL中沒有fn:concat
或fn:append
函數,盡管concat似乎是<%@ taglib prefix="x" uri="http://java.sun.com/jstl/xml" %>
在那種情況下
${fn:length(example.name) <= 15 ? example.name : x:concat(fn:substring(example.name, 0, 15), '...')}
也就是說,如果example.name的長度為15或更短,請使用它,否則采用子字符串並附加“ ...”,所有這些操作都是在JSP處理過程中在服務器上完成的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.