簡體   English   中英

javascript中的jstl

[英]jstl inside javascript

是否可以在 javascript 中使用 jstl?

我要設置<c:set var="abc" value="yes"/>

然后在 html 中訪問這個值並執行一些代碼。 我的問題是 c:set 總是在執行,即使 javascript 條件為假。

<script type="text/javascript">
var v1 = false;
<c:set var"abc" value="yes"/>

if(v1){
  <c:set var"abc" value="no"/>
}
</script>

在上面的代碼中,即使 v1 為 false 'no' 也設置為 abc。

當您談論服務器端 JSP 解釋時,“在 Javascript 內部”的想法是沒有意義的。 就該域而言,沒有 Javascript 這樣的東西。

因此,是的,這是可能的,如果您的意思是您想做類似的事情

var something = '${abc}';

請注意,您必須小心引用和特殊字符。 當您將 JSP 變量插入頁面的一部分中時,JSTL fn:escapeXml()函數是無用的,該部分將被瀏覽器解釋為 Javascript 源。 您可以使用 JSON 庫對字符串進行編碼,也可以編寫自己的 EL 函數來執行此操作。

這是一個很老的線程,但是當我遇到同樣的問題時,我碰到了它。 由於我自己想到了解決方案,因此我將其發布在這里,以防將來對某人有所幫助。

html(或 jsp)文件在聲明為 javascript 源的外部文件中查找文本。

Tomcat(或類似的)只解釋帶有 .jsp 擴展名的文件中的 JSTL 標簽(或者也可能是其他一些,但它與這個答案無關)。

因此,將您的 .js 文件重命名為 .jsp 擴展名(例如,將 javascript.js 改為 javascript_js.jsp)

在 javascript_js.jsp 的頂部添加這些行:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

並保持代碼不變。

顯然,如果在標題中使用 c: 以外的其他前綴,則還需要添加更多前綴。

如果您使用 Eclipse(不知道其他 IDE),它會假設它不是一個 javascript 文件,並且您會丟失不同關鍵字(var、function 等)、var 名稱自動完成和自動縮進的配色方案。

要愚弄IDE,您可以添加

// <script> 

作為 js 注釋,在實際代碼之前(在“<%@”聲明之后),以及

// </script>

在文件的末尾,再次作為 js 注釋。

它對我有用。

<script>
    <c:set var="myVal" value="Hello"/> 

    var val1="${myVal}";

</script>

暫無
暫無

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

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