0

我一直在查看 StackOverflow 并进行更广泛的搜索,以找到有关在 JSP 页面中管理 JavaScript 命令输出的一些信息。我不是 Java 开发人员,所以我在这里向专家寻求一些指导。

我不是想在服务器上编译 JavaScript,而是想办法存储代码块或简单的单行命令以在 JSP 页面中输出。主要目标是通过将所有必要的命令和代码块组合到页面底部的一个 SCRIPT 标记中来减少页面内多个内联 SCRIPT 标记的使用。代码块和命令通常用于初始化网页中的各种组件,其中一些将包括来自服务器的数据,这些数据被序列化为 JSON 并直接传递给命令,或用于设置标记化字符串中的值,这些字符串成为脚本块和/或命令。

该对象需要可用于任何 JSP 页面和任何服务器端包含的模块/页面。

我发现了这样一个问题:Java 脚本引擎在哪里使用?,但我不想在服务器上编译脚本,我想输出脚本以在网页中使用。我是一名 .Net 开发人员,我熟悉 ScriptManager 对象,该对象用于为 .Net 网站上的内置 AJAX 功能执行此确切任务。在另一个项目中,我扩展了 .Net ScriptManager 来执行此操作。

非常感谢您的想法或建议。

更新:以下面的 JSP 代码为例。我想在 Java 中有一个对象来将这些命令存储在标签内,以便在页面末尾输出。

这就是我现在所拥有的:

<html>
<head>
   <script type="text/javascript" src="somelibrarycode.js"></script>
...
</head>
<body>
...
<%
    // server-side code to set a value:
    //   obj is an object with method getBar that returns string
    string foo = obj.getBar(); 
%>
<div id="someComponent"></div>
<script type="text/javascript">
    // client-side code to initialize some page components:
    //    this would be what I consider a JavaScript command:
    someLibraryCode.someComponent.init('<%=foo%>');
</script>
...
...
...
...
<%
    // server-side code that to create instance of someObjectClass that has a  
    //   toJSON serializer method;
    someObjectClass myObject = new someObjectClass();
%>
<div id="anotherComponent"></div>
<script type="text/javascript">
    // more client-side code that takes the result of myObject.toJSON() which is 
    //   a JSON encoded-string value:
    someLibraryCoode.anotherComponent.init(JSON.decode('<%= myObject.toJSON() %>'));
</script>
...
</body>
</html>

这就是我想要做的:

(假设 myScript.add() 接受一个字符串和数组作为参数)

<html>
<head>
   <script type="text/javascript" src="somelibrarycode.js"></script>
...
</head>
<body>
...
<%
    // server-side code to set a value:
    //   obj is an object with method getBar that returns string
    string foo = obj.getBar();

    ScriptManager myScript = new ScriptManager();
    string commandString = "someLibraryCode.someComponent.init('{0}');";
    myScript.add(commandString, [foo]);
%>
<div id="someComponent"></div>
...
...
...
...
<%
    // server-side code that to create instance of someObjectClass that has a  
    //   toJSON serializer method;
    someObjectClass myObject = new someObjectClass();
    string myObjectJSON = myObject.toJSON();
    commandString = "someLibraryCoode.anotherComponent.init(JSON.decode('{0}'));";
    myScript.add(commandString, [myObjectJSON]);
%>
<div id="anotherComponent"></div>
...
...
...
<script type="text/javascript">
    // only one script tag within the body element
    // writeScript() outputs all stored script blocks/commands:
    myScript.writeScript();
</script>
</body>
</html>
4

1 回答 1

0

Javascript 在客户端加载和运行,因此这与 Java 或 JSP 无关,并且对任何其他 Web 技术同样有效,包括静态 html。我建议在页面末尾加载一个 .js 文件:

...
    <script type="text/javascript" src="myscript.js"></script>
</body>
</html>

并在该脚本中做任何需要的事情。它通常会在窗口上放置一个 onload 处理程序来进行一些初始化。如果需要,该脚本还可以动态加载更多脚本。

于 2013-01-17T14:33:57.700 回答