只需让 Java/JSP 打印一个语法上有效的 JS 数组语法。请记住,Java/JSP 和 JavaScript 不会同步运行。Java/JSP 将 HTML 作为一个整体生成,String
而 JS 只是其中的一部分。一旦从 Java/JSP 检索到所有 HTML 输出,JS 最终会在 Web 浏览器中运行。
假设您最终想要以下有效的 JS 数组语法:
<script type="text/javascript">
var strComboValue = [ "one", "two", "three" ];
</script>
然后您应该相应地编写您的 Java/JSP 代码,以便它准确地打印该语法:
<script type="text/javascript">
var strComboValue = [
<%
String[] options = DBComboOptions.getOptions(combos);
for (int i = 0; i < options.length; i++) {
%>
"<%= options[i] %>"
<%
if (i + 1 < options.length) {
%>
,
<%
}
}
%>
];
</script>
它只是非常不可读(不仅因为使用老式的 脚本而不是标记库)。然而,更简单的是获取像Google Gson这样的 JSON(JavaScript 对象表示法)库并创建一个附加方法getOptionsAsJson()
,该方法执行以下操作:
public getOptionsAsJson(Object value) {
return new Gson().toJson(getOptions(value));
}
最后改用它:
<script type="text/javascript">
var strComboValue = <%=DBComboOptions.getOptionsAsJson(combos)%>;
</script>