Wicket で JavaScript コードから Java コードを呼び出すにはどうすればよいですか?
-
03-07-2019 - |
質問
これができる場合、Wicket で JavaScript コード内から Java コード (メソッドなど) を呼び出すにはどうすればよいでしょうか。
解決
えーっと。正解は ajax コールバックです。js を手動でコーディングして wicket js にフックすることも、Java の wicket コンポーネントからコールバックをセットアップすることもできます。たとえば、AjaxLazyLoadPanel から:
component.add( new AbstractDefaultAjaxBehavior() {
@Override
protected void respond(AjaxRequestTarget target) {
// your code here
}
@Override
public void renderHead(IHeaderResponse response) {
super.renderHead( response );
response.renderOnDomReadyJavascript( getCallbackScript().toString() );
}
}
この例では、Wicket のコンポーネントにコールバック コードを追加する方法を示します。ブラウザで OnDomReady イベントが発生した後、ページをロードすると、Wicket によって JS エンジンが実行され、Ajax を使用して上記の「応答」メソッドがコードにコールバックされます。この時点で、Web 上で Java コードを実行できます。サーバーに追加され、再レンダリングされるコンポーネントが ajax ターゲットに追加される可能性があります。
これを js から手動で行うには、getCallbackScript().toString() を wicket コンポーネントの属性に出力することで wicket のシステムにフックできます。これにより、js からアクセスできるようになります。wicket-ajax.js から wicket の wicketAjaxGet を使用して、この URL を js から手動で呼び出します。
このトピックに関する多くの会話については、メーリング リストをチェックしてください。http://www.nabble.com/Wicket-and-javascript-ts24336438.html#a24336438
他のヒント
https://cwiki.apache.org/WICKET/からの抜粋calling-wicket-from-javascript.html
AbstractDefaultAjaxBehaviorをページに拡張するクラスを追加すると、wicket-ajax.jsがWebページのヘッダーに追加されます。 wicket-ajax.jsは、コンポーネントを呼び出すための2つの基本的な方法を提供します。
function wicketAjaxGet(url, successHandler, failureHandler, precondition, channel)
and
function wicketAjaxPost(url, body, successHandler, failureHandler, precondition, channel)
例を次に示します。
JavaScript
function callWicket() {
var wcall = wicketAjaxGet('$url
$ url $
は、メソッド abstractDefaultAjaxBehavior.getCallbackUrl()
から取得されます。そのメソッドから返された文字列をブラウザに貼り付けると、respondメソッドが呼び出されます。javascriptメソッドについても同様です。
必要に応じて、URL文字列に引数を追加して引数を追加できます。それらは& foo = bar
という形式を取ります。
次のようなJava応答メソッドでオプションの引数を取得します。
Map map = ((WebRequestCycle) RequestCycle.get()).getRequest().getParameterMap();
またはこれ:
String paramFoo = RequestCycle.get().getRequest().getParameter("foo");
+ '$args
$ url $
は、メソッド abstractDefaultAjaxBehavior.getCallbackUrl()
から取得されます。そのメソッドから返された文字列をブラウザに貼り付けると、respondメソッドが呼び出されます。javascriptメソッドについても同様です。
必要に応じて、URL文字列に引数を追加して引数を追加できます。それらは& foo = bar
という形式を取ります。
次のようなJava応答メソッドでオプションの引数を取得します。
<*>
またはこれ:
<*>, function() { }, function() { });
}
$ url $
は、メソッド abstractDefaultAjaxBehavior.getCallbackUrl()
から取得されます。そのメソッドから返された文字列をブラウザに貼り付けると、respondメソッドが呼び出されます。javascriptメソッドについても同様です。
必要に応じて、URL文字列に引数を追加して引数を追加できます。それらは&amp; foo = bar
という形式を取ります。
次のようなJava応答メソッドでオプションの引数を取得します。
<*>またはこれ:
<*>http://www.wicket-library。 com / wicket-examples-6.0.x / index.html / には、あなたを導くための多くの例があります。
またはDWRをご覧ください
DWRを使用すると、ブラウザ内のJavascriptがサーバー上のJavaと対話し、結果を使用してWebページを操作できます。
Dorwardが述べたように、これはAJAXを介して行われます
クライアントでJavaScriptが実行されていることを想定すると、サーバーへのHTTPリダイレクトが行われ、指定されたURLのリクエストにサーブレットが反応するようになります。
これは Ajax として知られ、