Wicket で JavaScript コードから Java コードを呼び出すにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/162911

  •  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をご覧ください

http://directwebremoting.org/

DWRを使用すると、ブラウザ内のJavascriptがサーバー上のJavaと対話し、結果を使用してWebページを操作できます。

Dorwardが述べたように、これはAJAXを介して行われます

クライアントでJavaScriptが実行されていることを想定すると、サーバーへのHTTPリダイレクトが行われ、指定されたURLのリクエストにサーブレットが反応するようになります。

これは Ajax として知られ、 rel = " nofollow noreferrer ">ライブラリは、あなたを支援します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top