2

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

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

Here, strComboValue is a JavaScript variable and the DBComboOptions.getOptions(combos) returns array in Java class. Now I want that array in JavaScript.

TTT
  • 1,848
  • 2
  • 30
  • 60
Sanju
  • 3,187
  • 10
  • 41
  • 55

2 Answers2

2

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>
Community
  • 1
  • 1
BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
0

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