Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从JSP页面中定义的Servlet调用JavaScript函数_Java_Javascript_Jsp_Servlets - Fatal编程技术网

从JSP页面中定义的Servlet调用JavaScript函数

从JSP页面中定义的Servlet调用JavaScript函数,java,javascript,jsp,servlets,Java,Javascript,Jsp,Servlets,我有一个JavaScript函数 function ShowDeptPanel() { document.getElementById("table1").style.visibility="hidden"; document.getElementById("table2").style.visibility="visible"; } 它是在JSP页面中定义的,但我想从Servlet调用它。我该怎么做 注意:在我的Servlet代码中进行某种检查后,我想禁用1个表。Javascript是客户

我有一个JavaScript函数

function ShowDeptPanel()
{

document.getElementById("table1").style.visibility="hidden";
document.getElementById("table2").style.visibility="visible";
}
它是在JSP页面中定义的,但我想从Servlet调用它。我该怎么做


注意:在我的Servlet代码中进行某种检查后,我想禁用1个表。

Javascript是客户端的,因此必须从web浏览器执行。如果您希望在页面加载时执行javascript,则在执行特定servlet后,可以执行以下操作:

  • 在servlet中,在请求属性中添加一个变量(如
    executeScript
  • 在JSP中,检查这个变量的值,如果它是
    true

  • 如果servlet总是发送相同的页面,那么只需在JSP中HTML
    标记的
    onload
    属性中添加javascript函数调用,使用scriptlet调用servlet函数并获得结果

    如果我们认为它是布尔值,那么

    <script type="text/javascript">
    function ShowDeptPanel()
    {
    
    document.getElementById("table1").style.visibility="hidden";
    document.getElementById("table2").style.visibility="visible";
    }
    
    var serverCheck = <% JavaClass classObject = JavaClass.getInstance();
                             classObject.getMethodChecking();%>;
    
    if(serverCheck==="true") {
        ShowDeptPanel();
    }
    </script>
    
    
    函数ShowDeptPanel()
    {
    document.getElementById(“table1”).style.visibility=“hidden”;
    document.getElementById(“表2”).style.visibility=“可见”;
    }
    var serverCheck=;
    如果(服务器检查==“真”){
    ShowDeptPanel();
    }
    

    这是隐藏表的一种方法。如果希望它是动态的,请对servlet进行ajax调用,并使servlet返回可以用javascript处理的响应,以隐藏/显示表。

    您不能从servlet调用javascript函数。@HAL9000您知道您在说什么吗?@mohamedrias yes您可以,通过使用
    ScriptEngineManager
    ,但是这不是合适的用例。那么如何更改JSP页面的内容,例如启用内容禁用?@LuiggiMendoza,任何其他替代方法??scriptlet仅在JSP呈现时运行一次。之后,它在生成的HTML中变成静态的。是的,我刚刚给他展示了一个例子。在呈现页面之前,scriplet将根据是否显示表进行解析。如果他希望它是动态的,那么他可以使用ajax调用调用servlet并获取值,基于此他还可以显示或隐藏表,这不会生成您希望显示给OP的预期结果。我假设OP想要隐藏表,他不知道如何做。因此,他考虑从servlet调用javascript函数。我需要更多地了解ScriptEngineManager。无论如何,谢谢你的建议:)