如何在java脚本中设置JSTL变量值?
<script>
function function1()
{
var val1 = document.getElementById('userName').value;
<c:set var="user" value=""/> // how do i set val1 here?
}
</script>
如何从“ val1 ”(Java 脚本)设置“用户”变量 ( JSTL ) 值?
如何在java脚本中设置JSTL变量值?
<script>
function function1()
{
var val1 = document.getElementById('userName').value;
<c:set var="user" value=""/> // how do i set val1 here?
}
</script>
如何从“ val1 ”(Java 脚本)设置“用户”变量 ( JSTL ) 值?
这是不可能的,因为它们在不同的环境中执行(服务器端的 JSP,客户端的 JavaScript)。因此它们不会按照您在代码中看到的顺序执行。
var val1 = document.getElementById('userName').value;
<c:set var="user" value=""/> // how do i set val1 here?
这里 JSTL 代码在服务器端执行,服务器将 JavaScript/Html 代码视为简单文本。从 JSTL 代码(如果有)生成的内容将与您的其他 JavaScript/HTML 代码一起呈现在生成的 HTML 中。现在浏览器在执行 Javascript 代码的同时呈现 HTML。现在请记住,浏览器没有可用的 JSTL 代码。
现在例如,
<script type="text/javascript">
<c:set var="message" value="Hello"/>
var message = '<c:out value="${message}"/>';
</script>
现在对于浏览器,此内容已呈现,
<script type="text/javascript">
var message = 'Hello';
</script>
希望这可以帮助。
另一种使用方法。
首先,在页面上的某处定义以下内容:
<div id="valueHolderId">${someValue}</div>
然后在 JS 中,做类似的事情
var someValue = $('#valueHolderId').html();
它适用于所有脚本都在 .js 文件中并且显然没有可用的 jstl 的情况
<script ...
function(){
var someJsVar = "<c:out value='${someJstLVarFromBackend}'/>";
}
</script>
这个工程,即使你没有一个隐藏/非隐藏输入字段集在JSP的某个地方。
只是不要。不要用代码写代码。在某处编写 JSON 对象或变量,但出于对合理 HTTP 划分的热爱,不要编写使用 JSTL 提供的变量/属性硬编码的 JavaScript 函数或方法。生成 JSON 很酷。到此结束,否则您的 UI 开发人员讨厌您。
想象一下,如果您必须深入研究 JavaScript 才能找到在源自客户端的类的中间设置参数的东西。这太可怕了。来回传递数据。处理数据。但不要尝试生成实际代码。
您必须使用普通的字符串连接,但您必须确保该值是一个有效的 XML 字符串,您会发现在此源http://oreilly.com/pub/h/2127 中编写 XML 的好做法,或者如果例如,您可以使用 javascript 中的 API 将 XML 编写为helma。