問題タブ [jsni]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gwt - サーブレットからJSNIを使用してJava関数を呼び出す
JSNIメソッドを作成しました。別のメソッドから「createCallbackFunction」メソッドを登録しています。
私は得ています
出力としてアラートで。
ストラットアクションクラスからこれを呼び出そうとしています
しかし、Javascriptは実行されていません。アラートが機能しておらず、アップロードメソッドが呼び出されていません。
javascript - GWTのJSNIを使用して関数ポインタをJavaScript関数に渡すにはどうすればよいですか?
以前にJSNIを使用したことがありますが、JSNIを使用するパラメーターとして関数ポインターを渡す必要がなく、これを行う方法がわかりません。どんな助けでも大歓迎です!
java - GWT FileUpload のラッピング/装飾
GWT FileUpload は、フォームの送信中にファイルをアップロードできるようにするウィジェットとして提供されます (少なくとも私はそれを理解しています:)) .." ボタン。
私は GWT の経験が少ない (そして JavaScript がない) ため、既存のソリューションを探したところ、非常に優れたプロジェクトgwtuploadを見つけました。それは良いことですが、私は自分自身のミニチュアバージョンが欲しいことに気付きました (また、それがどのように機能するかについても興味がありました)。そこで、コードをブラウジングし、魔法の部分を抽出しようとしました。GWT FileInput が使用されていることに気付きましたが、表示されておらず、ボタンのクリックはこの FileInput に委任されています。gwtupload のソースを確認した後、抽出しようとしたコード (クリックを委任する部分のみ) には、次のトリッキーな JSNI が含まれていますelem.click()
。
しかし、これはうまくいかないようです: 'My Browse..' をクリックしても効果はありません (念のため、コメントなしcontainer.add(upload)
の行で実行しようとしました)。このコード サンプルのどこが間違っているか、何が欠けているかを理解するのを手伝ってくれませんか?
前もって感謝します。
PS私はそれをFormPanelに配置する必要があることを知っており、サーブレットで実際の送信/処理を実行する方法について残りを知っています。私がやりたいのは、この種の装飾だけです。
arrays - GWTでクラスオブジェクトを使用して新しい配列を作成する
GWTのクラスオブジェクトから、指定されたタイプの新しい配列を作成したいと思います。
私が言いたいのは、の機能をエミュレートしたいということです
これが発生する必要がある理由は、次のことを時々行う必要があるライブラリがあるためです。
これは、通常は配列クラスを渡すと機能しますが、任意のコンポーネントタイプから新しい配列を動的に作成することはできません。
私はGWTの反省の欠如をよく知っています。これは分かります。ただし、GWTの反射が限られている場合でも、これは実行可能と思われます。これを信じる理由は、実装には、配列のクラスオブジェクトを作成するためのアクセスできない静的メソッドが存在するためです。
同様に、配列メソッドはJavaScript配列のタイプセーフなラッパーであると理解しているため、JSNIが必要な場合でも、簡単にハッキングできるはずです。
実際には、より重要なことはクラスオブジェクトを取得することです。新しい配列を作成できないことを回避できます。
javascript - GWT: JsDate と Java Date の操作
私のオーバーレイでは、JavaScript の Date オブジェクトを JsDate でラップしています。
ただし、DateBox などのウィジェットでその日付を使用する場合は、値を Java Date として設定する必要があります。JsDate から Java Date を作成することはできますが、オーバーヘッドが増えると思います。
これを達成するためのよりクリーンな方法はありますか?JsDate オブジェクトを Java Date オブジェクトに、またはその逆に変換する最良の方法は何ですか?
どうもありがとう
java - GWT Javascript Native InterfaceでJavavarargsを使用するにはどうすればよいですか?(別名、「GWTにはprintf()がありません」)
新しいプロジェクトの一環として、GWTをすばやく習得しようとしています。GWTはJavaのString.format()関数を実装していないため、printf()のような機能はありません。Javascript用にいくつかのprintf()実装が存在することを知っていたので、そのうちの1つをGWTJavascriptネイティブインターフェイス関数として貼り付けることができると思いました。問題が発生したので、varargs値が正しく渡されていることを確認したほうがよいと判断しました。それは物事が醜くなったところです。まず、いくつかのサンプルコード:
GWTのドキュメントには、「Javaからvarargs JavaScriptメソッドを呼び出すと、呼び出し先が配列内の引数を受け取ることになります」と記載されています。つまり、少なくともparams.lengthをチェックできると思いましたが、それにアクセスすると、UmbrellaExceptionにラップされたJavascriptExceptionがスローされ、実際の情報はありません。「typeof(params)」を実行すると、「function」が返されます。それが十分に奇妙ではなかったかのように、paramsの文字列値をチェックすると、Java参照の文字列バージョンのように見えるものが返されます。
だから、私はここでいくつかの異なる質問をしていると思います:
1)GWT / JSNI varargsは実際にどのように機能し、値を渡すために何か特別なことをする必要がありますか?
2)ここで実際に何が起こっているのですか?
3)GWTアプリケーションでprintf()スタイルのフォーマットを取得する簡単な方法はありますか?
gwt - GWT JSNI - 文字列を渡す際の問題
GWT プロジェクトでいくつかの関数フックを提供しようとしています。
publish()
で呼び出されonModuleLoad()
ます。しかし、これは機能せず、開発コンソールで理由に関するフィードバックを提供しません。私も試しました:
これはjava.lang.ClassCastException
FireBug コンソールでa を投げますが、問題alert
なく発火します。提案?
javascript - GWT 2.x $entry 関数
この関数に関する開発者情報が見つかりません。$entry
この関数を使用して Java メソッドへの JSNI JavaScript 呼び出しをラップすることが提案されていることだけは知っています。Javaコードが例外を処理できるように、例外をキャッチすることがわかりました。それだけですか?
java - html スクリプト タグから GWT Java 関数を呼び出す
GWT プロジェクトがあり、クライアント コードにある Java 関数を呼び出すスクリプト タグを GWT プロジェクトのメイン html ファイルに追加したいと考えています。
ドキュメントによると、次の html タグのようなものを追加する必要があります。
ここで、com.myCompany.myProject.client.myClassはクラス パスで、myFunctionは呼び出したい Java 関数です。
myFunction の次の実装でこれを試しても何も起こりません:
つまり、myFunctionは呼び出されていません。
しかし、JSNI メソッドから同じ呼び出しを行うと、機能します。
HTMLスクリプトから呼び出しを行うことはできないのでしょうか、それとも何か間違っていますか?
ありがとう!
gwt - GWT: getElementById() への JSNI 関数呼び出しが Null を返す
JSNI を使用して、アプリケーション内に Google マップを表示しようとしています。index.html ページでスクリプトを定義しました。
以下は、uibinder の定義です (要点のみ抜粋):
これが initializeMap() ネイティブ関数です。
残念ながら、mapDiv は null です。そこに何か助けはありますか?
gwt-maps および gwt-maps-v3 プロジェクトを認識しています。1 つ目は API の v2 のみをサポートし、gwt-maps-v3 は機能しないため、JSNI アプローチを使用します。