一尘不染

我们如何通过JSP scriptlet获取JavaScript数组

jsp

我需要Java类返回的JavaScript数组/多维,

<script type="text/javascript">
     var strComboValue  = <%=DBComboOptions.getOptions(combos)%>;
</script>

这里strComboValue是一个JavaScript变量和DBComboOptions.getOptions(combos)Java类中的returns数组。现在,我要用JavaScript编写该数组。


阅读 264

收藏
2020-06-08

共1个答案

一尘不染

只需让Java / JSP打印语法上有效的JS数组语法即可。请记住,Java / JSP和JavaScript不会同步运行。Java /
JSP产生HTML很大,String而JS只是其中的一部分。一旦JS从Java/JSP检索了所有HTML输出,它最终将在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>

这是完全不可读的。但是,更简单的方法是获取一个类似于GoogleGson的JSON(JavaScript对象表示法)库,并创建一个getOptionsAsJson()执行以下操作的附加方法:

public getOptionsAsJson(Object value) {
    return new Gson().toJson(getOptions(value));
}

最后改为使用它:

<script type="text/javascript">
    var strComboValue = <%=DBComboOptions.getOptionsAsJson(combos)%>;
</script>
2020-06-08