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可用的情况
<script ...
function(){
var someJsVar = "<c:out value='${someJstLVarFromBackend}'/>";
}
</script>
Run Code Online (Sandbox Code Playgroud)
这个工程,即使你没有一个隐藏/非隐藏输入字段集在JSP的某个地方。
您必须使用普通的字符串连接,但必须确保该值是有效的 XML 字符串,您会发现在此源http://oreilly.com/pub/h/2127中编写 XML 是一个很好的做法,或者如果您可以使用 javascript 中的 API 来编写 XML,例如helma 。