簡體   English   中英

超級簡單的JSP Javascript問題

[英]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:substringfn: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:concatfn: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), '...')}

也就是說,如果exam​​ple.name的長度為15或更短,請使用它,否則采用子字符串並附加“ ...”,所有這些操作都是在JSP處理過程中在服務器上完成的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM