How can we get JavaScript array by JSP scriptlet

前端 未结 2 1871
迷失自我
迷失自我 2021-01-22 03:08

I need JavaScript array/multidimensional which is returned by Java class,



        
相关标签:
2条回答
  • 2021-01-22 03:43

    Just let Java/JSP print a syntactically valid JS array syntax. Keep in mind that Java/JSP and JavaScript doesn't run in sync. Java/JSP produces HTML as one large String and JS is just part of it. JS ultimately runs in the webbrowser once it has retrieved all that HTML output from Java/JSP.

    Assuming that you ultimately want the following valid JS array syntax:

    <script type="text/javascript">
        var strComboValue = [ "one", "two", "three" ];
    </script>
    

    Then you should write your Java/JSP code accordingly so that it prints exactly that syntax:

    <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>
    

    It's only terribly unreadable (and not only because of using old fashioned scriptlets instead of taglibs). Easier, however, is to grab a JSON (JavaScript Object Notation) library like Google Gson and create an additional method getOptionsAsJson() which does something like the following:

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

    And finally use it instead:

    <script type="text/javascript">
        var strComboValue = <%=DBComboOptions.getOptionsAsJson(combos)%>;
    </script>
    
    0 讨论(0)
  • 2021-01-22 03:46

    your can use json lib, on http://json.org there are many json librarys, i.e.

    int[] arr = new int [] {1,2,3}; // java
    

    convert to:

    var arr = [1,2,3];  // javascript
    
    0 讨论(0)
提交回复
热议问题