2012-12-12 18 views
5

Java Map'im var. Onu JavaScript haritasına dönüştürmek istiyorum.Java Haritasını Javascript Haritasına Dönüştür

JS harita olarak dönüştürmek için java fonksiyonu aşağıdaki gibidir: JSP sayfa kod javascript yılında

private Object getJSLocalizedValueMap() { 

    Map<String, String> langSel = new HashMap<String, String>(); 
    langSel.add("en", true); 
    langSel.add("de", false); 
    langSel.add("fr", false); 

    //Now convert this map into Javascript Map 
    NativeObject nobj = new NativeObject(); 
    ScriptEngineManager factory = new ScriptEngineManager(); 
    ScriptEngine engine = factory.getEngineByName("javascript"); 
    for (Map.Entry<String, String> entry : langSel.entrySet()) { 
     nobj.defineProperty(entry.getKey(), entry.getValue(), NativeObject.READONLY); 
    } 
    engine.put("langSel", nobj); 
    return langSel; 
} 

: Javascript yılında

var langs = ${messagesJS}; 

, I got:

langs = {en=true, de=false, fr=false}; 

yerine

Lütfen bunu nasıl başaracağımı öneriniz?

+1

Anahtarların çift tırnak içine alınması için ** 'ye ihtiyacınız var mı? Zaten geçerli bir JavaScript nesnesiniz var. Eğer bu mutlak bir gereklilikse (ve yine neden tek bir sebep olduğunu düşünemiyorum), geri dönme [JSON] (http://json.org). –

cevap

5

Bunun için JSONObject sınıfını kullanabilirsiniz. Bir Map içinde geçirdiğiniz bir kurucu vardır. Bunu arayın ve toString() yöntemini arayın ve size bir JS dizisi vermelidir.

http://www.json.org/javadoc/org/json/JSONObject.html#JSONObject%28java.util.Map%29

Yani gibi bir şey:

Map<String, String> langSel = new HashMap<String, String>(); 
langSel.add("en", true); 
langSel.add("de", false); 
langSel.add("fr", false); 

JSONObject jsonObj = new JSONObject(langSel); 
engine.put("langSel", jsonObj.toString()); 

Sen org.json.JSONObject sınıf Sınıfyolu açık olduğundan emin olmak gerekir. Ya JAR indirip (Eclipse veya bir şey aracılığıyla) elle classpath eklemek veya Maven kullanıyorsanız gibi bağımlılık aşağıdakileri kullanın: Maven kullanmıyorsanız

<dependency> 
    <groupId>org.json</groupId> 
    <artifactId>json</artifactId> 
    <version>20070829</version> 
    </dependency> 

, yine buradan JAR indirebilirsiniz Bunun yerine aşağıda hat

langSel.add("en", true); 

kullanımı bu duruşu http://mvnrepository.com/artifact/org.json/json/20090211

+0

JSONObject sınıfı nasıl alınır? Sınıf yolunu bulamıyor. – Rajasekhar

+0

Yanıtı güncelleştirin – cowls

+0

Teşekkürler cowls, sınıf yolunu ekleyebiliyorum. Ancak, hala {"en" yerine {en = true, de = false, fr = false} (JSP haritası) olarak dize alıyorum: true, "de": false, "fr": false} (javaScript haritası) JSP sayfasında. – Rajasekhar

1

langSel.add("\"en\"", true); 

Bunu faydalı olabileceğini deneyin.

İlgili konular