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);
});
});
}-*/;
次のエラーが表示されます。
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 の結果が得られないのはなぜですか?
3 行目で間違った方法で JSNI 関数を呼び出しているのではないかと思います。しかし、ドキュメントhere で指定されているすべてのルールに従っていることがわかります。
編集:
これは機能します:
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);
});
});
}-*/;