JSTL。如何从c:set jstl tag中的<script>调用函数?

时间:2017-11-10 12:46:22

标签: javascript jstl

我只需要这样的东西:

&#xA;&#xA;
 &lt; c:set var =“cls”value =“$ {myFunc(param)}”/ &GT;&#XA;&#XA; .....&#XA;&#XA;&LT;脚本&GT;&#XA; function myFunc(param){&#xA; if(param == true){&#xA;返回“aaa”;&#xA; } else {&#xA;返回“bbb”;&#xA; }&#XA; }&#xA;&lt; / script&gt;&#xA;  
&#xA;&#xA;

当我尝试它时会出现此错误:

&#xA; &#XA;
&#XA;

org.apache.jasper.el.JspELException:/script.jsp(22,12)'$ {myFunc()}'&#xA;函数[:myFunc]未找到

&#xA;
&#xA;

1 个答案:

答案 0 :(得分:1)

你正在尝试做什么,可能吗?

用一个词来回答这个问题 NO ...

让我们深入了解原因,提示就在这里.. JSTL(JavaServer Pages标准标签库)..请参阅“服务器”一词。是。

JSP页面的编译方式与Java文件类似。编译成功后,可以将其作为响应发送,然后浏览器呈现此响应并显示页面。

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

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

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

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

希望这有助于您了解JSP和服务器端的工作情况。

牢记事情,尝试一些更好的方法来解决您的问题。

快乐编码:)