javaとjavascriptの組み合わせについて質問があります。このアプリケーションでは、JavaScriptでGUIをビルドし、Javaでサーバー側をビルドします。javascriptでは、javaのclassYからmethodXを呼び出したいと記述しています。問題は、javaがjavascriptについて何も知らないため、javaで何かを変更すると、javascriptコードが破損する可能性があることです。Eclipseの単純なリファクタリングオプションでさえ、知らないうちにjavascriptを壊す可能性があります(メソッド名の変更、パラメーターの削除、DTOオブジェクトのsetterとgetterの名前の変更)。問題は、それに対抗する方法です。私はJavaでいくつかのアノテーションを書くことを考えていたので、メソッドのシグネチャを変更した後、コンパイルエラーが発生します(この種のアノテーションを書くことさえ可能ですか)が、ある種のツールがある場合は、車輪の再発明をやり直したくありません私のためにそれをします。
質問する
153 次
2 に答える
0
問題は、それに対抗する方法です。
おそらく最も実用的な解決策は、Javascriptから呼び出されるJava APIがある場合(またはその逆)のすべてを「実行」するように特別に設計された一連の自動テスト(ユニットテストやシステムテストなど)を開発することです。
于 2013-02-21T07:50:56.497 に答える
0
あなたの問題にはいくつかの解決策(回避策)があると思います。
1)メソッドを使用して特定の文字列をマッピングします。
public class JavascriptCallable {
private static final String jsIdentifierMethod1 = "method1";
private static final String jsIdentifierMethod2 = "method2";
/**
* All requests from JS should be redirected to this method.
*
* @param methodName Name of the method
*/
public void requestFromJavascript (String methodName) throws Exception {
if (methodName.equals(jsIdentifierMethod1)){
method1();
} else if (methodName.equals(jsIdentifierMethod2)){
method2();
} else{
throw new Exception("Method not supported");
}
}
public void method1(){
// Do something
}
public void method2() {
// Do something
}
}
2)js呼び出しに適格な個別のメソッドを持つ。これは、リフレクションを使用してメソッドを呼び出す場合に役立ちます
public class JavascriptCallable {
/*----------------Methods to be called by js. Never refractor------------------*/
public void noRefractorMethod1() {
method1();
}
public void noRefractorMethod2() {
method2();
}
/*-------------------------------------------------------------------------------*/
/*---------Methods with business logic. Refractoring these will not mess your js-----------*/
public void method1() {
// Business logic
}
public void method2() {
// Business logic
}
/*-------------------------------------------------------------------------------*/
}
これが役に立ったら教えてください。
于 2013-02-23T19:14:59.683 に答える