java - 使用 JSNI 将 List<String> 转换为 Javascript

标签 java gwt twitter-bootstrap jsni

需要执行一个 JSNI 方法,该方法将在 TextBox 上提供一个项目列表,使用 Twitter Bootstrap X-Editable 将其设置为“可编辑”为 ListBox :

public static native void makeEditableList(Element el /*, List<String> items*/)/*-{
    $wnd.items=[];
    $wnd.$.each({"BD": "Bangladesh", "BE": "Belgium", "BF": "Burkina Faso", "BG": "Bulgaria"}, 
        function(k, v) {
        $wnd.items.push({id: k, text: v});
    }); 
    $wnd.$(function(){      
            $wnd.$.fn.editable.defaults.mode = 'inline';
            $wnd.$(el).editable({
                inputclass: 'input-large',
                source: $wnd.items
            });
        }
    );          
}-*/;

问题是:

  • 需要将List转换为Javascript列表
  • 源似乎没有从 $wnd.items 获取项目

很好,当我运行应用程序时,GWT TextBox 变为 X-Editable但它不显示项目列表。

最佳答案

要将列表转换为 JavaScript 列表,您可以使用这段代码:

private JavaScriptObject convertListToJsList(List<String> list){
    JavaScriptObject jsListObject = createJsListObject();
    for (String stringToAdd : list){
        addStringElement(jsListObject, stringToAdd);
    }
    return jsListObject; 
}


private native JavaScriptObject createJsListObject()/*-{
    return [];
}-*/;

private native void addStringElement(JavaScriptObject jsListObject, String stringToAdd)/*-{
    jsListObject.push(stringToAdd);
}-*/;

然后你可以将它传递给

public static native void makeEditableList(Element el /*, List<String> items*/, JavaScriptObject list)

并像 JavaScript 列表一样使用它。有点矫枉过正,但它确实有效。

关于java - 使用 JSNI 将 List<String> 转换为 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17803524/

相关文章:

java - GWT 找不到 .gwt.xml

html - 调整窗口大小并确保图像和文本大小正确

twitter-bootstrap - 使用干净的代码进行 Bootstrap 设计 UI/模型?

java - 如何将图像拆分为多个较小的图像

ajax - 带有 GWT 的 HtmlUnit 返回不完整的页面

Java 黑莓位图单击

java - native GWT : calling java method from native js

html - 通知未显示在特定按钮上

Java - Html 特殊字符

java - eclipse 中的 "Installed Software"与 "Features"与 "Plug-ins"