我正在嘗試使XEditable Jquery-ui插件與GWT/Errai協同工作。 但是,當點擊所謂的「x-editable」字段時,沒有任何反應。出了什麼問題在我的代碼:使JQuery-UI插件與Errai協同工作
這是我的代碼:
的Java:
@Dependent
@Page
@Templated
public class XeditableTest extends Composite {
@DataField
private Element xfield;
@PostConstruct
public void setup() {
xeditable(xfield);
}
public static native void xeditable(Element el) /*-{
$wnd.alert($wnd.$(el).length);
$wnd.$(function(){
$wnd.$.fn.editable.defaults.mode = 'inline';
$wnd.$(el).editable({
validate: function(value) {
if($wnd.$.trim(value) == '') return 'This field is required';
}
});
}
)
}-*/;
@EventHandler("xfield")
public void onAnchorClicked(ClickEvent clickEvent) {
clickEvent.preventDefault();
}
}
模板:
<div class="control-group">
<a href="#" data-field="xfield" id="firstname" data-type="text" data-pk="1" data-placement="right" data-placeholder="Required" data-original-title="Enter your firstname" class="editable editable-click editable-empty">Empty</a>
</div>
更新:
錯誤我g等通過元件的xeditable
方法之後:
ERROR] Caused by: com.google.gwt.core.client.JavaScriptException: (TypeError): Cannot read property 'defaults' of undefined
[ERROR] at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:248)
[ERROR] at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
[ERROR] at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561)
[ERROR] at com.google.gwt.dev.shell.ModuleSpace.invokeNativeVoid(ModuleSpace.java:289)
[ERROR] at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeVoid(JavaScriptHost.java:107)
[ERROR] at com.myapp.client.local.XeditableTest.xeditable(XeditableTest.java)
[ERROR] at com.myapp.client.local.XeditableTest.setup(XeditableTest.java:53)
我想您的意見,但我得到上面的JavaScriptException錯誤... – xybrek
也 - 這是不是你的代碼的問題,但你確定xfield已初始化?你可能需要有'private Element xfield = DOM.createDiv();'(用你使用的任何元素替換Div)。你不能在元素中使用@Inject,因爲它們沒有構造函數。 –
我現在有︰@DataField private Element xfield = DOM.createElement(「a」); – xybrek