public void query(String sql, QueryResult queryResult) {
q = queryResult;
realQuery(sql, conString);
}
public static native void realQuery(String sql, String conString) /*-{
$wnd.pg.connect(conString, function(err, client) {
client.query(sql, function(err, result) {
console.log(result.rows);
var code = "@db.tud.bp.werkstatt.client.PgClient::result(Ljava/lang/String;)(" + '"' + JSON.stringify(result.rows).replace('"','\\"') + '"' + ");";
console.log(code);
eval(code);
});
});
}-*/;
Я получаю эту ошибку:GWT: «непризнанный формат вызова»: что это значит?
com.google.gwt.event.shared.UmbrellaException: Exception caught: (Error)
@de.tud.bp.werkstatt.client.PgClient::realQuery(Ljava/lang/String;Ljava/lang/String;)
([string: 'SELECT age FROM person WHERE name='Ayeb'', string: '/rest/query']):
unrecognized calling format
at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:129)
Что «непризнанный формат вызов» означает, и почему я не получаю никаких результатов Google при поиске для него?
Я подозреваю, что я неправильно вызываю функцию JSNI в строке 3. Но я AFAIK, следуя всем правилам, указанным в документах here.
EDIT:
Это работает:
public static native void realQuery(JavaScriptObject parsed) /*-{
var sql = parsed[0];
var conString = parsed[1];
$wnd.pg.connect(conString, function(err, client) {
});
}-*/;
Это не:
public static native void realQuery(JavaScriptObject parsed) /*-{
var sql = parsed[0];
var conString = parsed[1];
$wnd.pg.connect(conString, function(err, client) {
client.query(sql, function(err, result) {
console.log(result.rows);
});
});
}-*/;
Является ли ваш метод 'result' статическим? Получает ли он только одну строку в качестве аргумента? Если это так, возможно, проблема '' + '"' + JSON.stringify (result.rows) .replace ('"', '\\ "') + '"' + "'. –
@GilbertoTorrezan: Насколько я вижу, ошибка вызывается непосредственно перед вызовом функции. результат объявляется так: 'static void result (String json)' –