日本科技大学如何从 c:set jstl 标签中的 <script> 调用函数?

JSTL. How to call a function from <script> in c:set jstl tag?

我只需要这样的东西:

<c:set var="cls" value="${myFunc(param)}"/>

.....

<script>
    function myFunc(param) {
        if(param == true) {
            return "aaa";
        } else {
            return "bbb";
        }
    }
</script>

当我尝试时出现此错误:

org.apache.jasper.el.JspELException: /script.jsp(22,12) '${myFunc()}' Function [:myFunc] not found

您尝试做的事情可行吗??

这个问题的答案一言以蔽之...

让我们深入研究原因,提示在这里.. JSTL(Java服务器页面标准标签库)..看到这个词'Server'。是的。

JSP 页面像您的 Java 文件一样编译。一旦编译成功,它就可以作为响应发送,然后浏览器呈现这个响应并显示页面。

JavaScript : 是一种客户端编程语言,这意味着 JavaScript 中的代码 运行 由浏览器而非服务器

当编译器编译Jsp文件时,它只播放Scriptlet和JSTL部分,其余代码(我指的是HTML、CSS和JS代码的其余部分) 只是一段字符串。

现在,想象一下你的代码中的一种情况,当 Java 编译器试图编译它时发现 myFunc 必须是一个方法,但在哪里寻找?

它不能将其视为 javascript 函数,因为 javascript 运行 仅在浏览器中而不在服务器端。因此,您无法设置 cls 变量的值,因为 myFunc 对于 Java 是未知的。

希望这可以帮助您了解 JSP 和服务器端工作。

牢记以上几点,尝试一些更好的方法来解决您的问题。

快乐编码:)