2015-12-05 43 views
0

嗨我在GWT中使用JSNI来使用一些JavaScript代码。我在UiBinder的定义我的窗口小部件(file.ui.xml):通过JSNI更改Widget文本

<g:Label ui:field="LBLMsg" text="mytext" styleName="{style.conceptMessage}" width="1800px"/> 

比我通过以下代码中使用这种标签在我的Java文件:

@UiField标签LBLMsg;

它工作正常我可以使用标签小部件,并可以使用LBLMsg.setText(“sometex”) 但是我的问题开始时,我传递给我的JSNI函数在一些JAVAScript代码中使用它。我想改变我用下面的代码使用Java脚本本该标签的文本:

void TestWritingLabelFromJSNI() 
     { 
     writeGWTLabel(LBLMsg.getElement()); 

     } 
    private native void writeGWTLabel(Element elt)/*-{ 

    var labelelement = document.getElementById('LBLMsg'); 
    alert("Element labelelement ;"+labelelement); 

     }-*/ 

当我把这个labelelement返回NULL。因此我无法设置文本。我不知道我在做什么。任何人都可以提出任何建议。非常感谢任何帮助。已经浪费太多时间而没有任何成功。

回答

0

所有你需要做的是这样的:

private native void writeGWTLabel(Element elem, String text)/*-{ 
    // Remove all children first. 
    while (elem.firstChild) { 
     elem.removeChild(elem.firstChild); 
    } 
    // Add a new text node. 
    if (text != null) { 
     elem.appendChild(elem.ownerDocument.createTextNode(text)); 
    } 
}-*/ 
+0

我曾经尝试过,但没有奏效。出现以下错误: 未捕获的com.google.gwt.event.shared.UmbrellaException:发生异常:(TypeError):elt_0_g $ .setInnerText不是函数 – Nhqazi

+0

谢谢.it为我工作。但是,它不是将文本添加到标签小部件中,而是添加到添加的节点中。我希望在我传递给jsni的标签小部件中添加文本。该密文不会对其提出任何建议。 – Nhqazi

+0

当你调用label.setText(“”)时,这个本地方法被调用。 –