如何在javascript中设置JSTL变量值?

Ton*_*ony 35 javascript jsp jstl

如何在java脚本中设置JSTL变量值?

<script>

 function function1()

 { 

  var val1 = document.getElementById('userName').value;

  <c:set var="user" value=""/>  // how do i set val1 here?   

 }
 </script>
Run Code Online (Sandbox Code Playgroud)

如何从' val1 '(Java脚本)设置' user '变量(JSTL)值?

Mar*_*amy 46

这是不可能的,因为它们是在不同的环境中执行的(服务器端的JSP,客户端的JavaScript).因此,它们不会按照您在代码中看到的顺序执行.

var val1 = document.getElementById('userName').value; 

<c:set var="user" value=""/>  // how do i set val1 here? 
Run Code Online (Sandbox Code Playgroud)

这里JSTL代码在服务器端执行,服务器将JavaScript/Html代码视为简单文本.来自JSTL代码(如果有)的生成内容将与您的其他JavaScript/HTML代码一起呈现在生成的HTML中.现在浏览器呈现HTML以及执行Javascript代码.现在请记住,浏览器没有可用的JSTL代码.

现在举个例子,

<script type="text/javascript">
<c:set var="message" value="Hello"/> 
var message = '<c:out value="${message}"/>';
</script>
Run Code Online (Sandbox Code Playgroud)

现在,对于浏览器,将呈现此内容,

<script type="text/javascript">
var message = 'Hello';
</script>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.


Cyr*_*eba 11

还有一种使用方法.

首先,在页面的某处定义以下内容:

<div id="valueHolderId">${someValue}</div>
Run Code Online (Sandbox Code Playgroud)

然后在JS中,做一些类似的事情

var someValue = $('#valueHolderId').html();
Run Code Online (Sandbox Code Playgroud)

它适用于所有脚本都在.js文件中并且显然没有jstl可用的情况


Vik*_*ram 5

<script ...
  function(){
   var someJsVar = "<c:out value='${someJstLVarFromBackend}'/>";

  }
</script>
Run Code Online (Sandbox Code Playgroud)

这个工程,即使你没有一个隐藏/非隐藏输入字段集在JSP的某个地方。


Kro*_*ass 0

您必须使用普通的字符串连接,但必须确保该值是有效的 XML 字符串,您会发现在此源http://oreilly.com/pub/h/2127中编写 XML 是一个很好的做法,或者如果您可以使用 javascript 中的 API 来编写 XML,例如helma 。