2

Java バックエンド クラスから動的に生成された大量の JavaScript コードを使用する JSP で Web ページを開発しています。Google マップと MarkerClusterer という JS ライブラリについてです。

現在、このクラスは Java で文字列を処理して JSP ページに直接出力することで JavaScript コードを生成していますが、Java 文字列内に JS を記述してそれを維持するのは少し複雑になっています。

このクラスはさまざまなプロジェクトで使用されているため、JavaScript には常に多くの変更が必要です。理想的には、これをライブラリとして使用できるようにパッケージ化し、それ以上の変更を必要としないようにしたいので、それが問題です。それを行う最良の方法は何ですか?

コードの一部を次に示します。

public class JavascriptGenerator {

    public String gerarPorRegiao(String contextPath, List<Endereco> lista, boolean infoWindowEnabled) {
        String saida = "";

        saida += "<script type=\"text/javascript\" src=\"http://maps.google.com/maps/api/js?sensor=false\"></script>"
                + "<script type=\"text/javascript\" src=\""
                + contextPath
                + "/js/markerclusterer.js\"></script>"
                + "<script type=\"text/javascript\">"
                + "var map;";
        for(Estado e: Estado.values()) {
            saida += "var mc" + e.toString() + ";";
        }
                saida += "var selecionado;"
                + "var center = new google.maps.LatLng(-11.0, -51.9);"
                + "var geocoder = new google.maps.Geocoder();"
                + "var infowindow = new google.maps.InfoWindow();"
                + "var markerContent = new Array();"
                + "function geocoderInit() {"
...
4

3 に答える 3

2

私は言うでしょう:しないでください。

JavaScript を動的に生成しないでください。維持するのは悪夢になるでしょう。js を静的ファイルに保持し、ajax を使用してデータをフェッチします。データは JSON の形式にすることができます。JSON は、ダウンロードできる多くの JSON ライブラリの 1 つを使用して、オブジェクト階層から自動生成できます。

于 2013-09-25T12:17:24.247 に答える