簡體   English   中英

如何從Wicket中的JavaScript代碼調用Java代碼?

[英]How do I call Java code from JavaScript code in Wicket?

如果我能做到這一點,我如何在Wicket的JavaScript代碼中調用Java代碼(例如方法)。

ERK。 正確的答案是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中的任何Component。 在您的瀏覽器中觸發OnDomReady事件后,在加載頁面時,Wicket將使其成為js enging,使用Ajax回調您的代碼,使用上面顯示的'response'方法,此時您可以在服務器,並可能將組件添加到要重新呈現的ajax目標。

要從js手動執行此操作,您可以通過將getCallbackScript()。toString()打印到wicket組件上的屬性來掛鈎到wicket的系統,然后您可以從js訪問該屬性。 用wicket的wicketAjaxGet從wicket-ajax.js手動調用來自js的這個url。

查看關於此主題的大量對話的郵件列表: http//www.nabble.com/Wicket-and-javascript-ts24336438.html#a24336438

摘錄自https://cwiki.apache.org/WICKET/calling-wicket-from-javascript.html

如果您添加任何擴展AbstractDefaultAjaxBehavior的類到您的頁面,wicket-ajax.js將被添加到您的網頁的標題中。 wicket-ajax.js為您提供了兩種調用組件的基本方法:

function wicketAjaxGet(url, successHandler, failureHandler, precondition, channel)

function wicketAjaxPost(url, body, successHandler, failureHandler, precondition, channel)

這是一個例子:

JavaScript的

function callWicket() {
   var wcall = wicketAjaxGet('$url$' + '$args$', function() { }, function() { });
}

$url$是從方法abstractDefaultAjaxBehavior.getCallbackUrl() 如果將從該方法返回的String粘貼到瀏覽器中,則將調用respond方法,這同樣適用於javascript方法。

您可以選擇通過將這些參數附加到URL字符串來添加參數。 它們采用&foo=bar的形式。

你在Java響應方法中得到可選參數,如下所示:

Map map = ((WebRequestCycle) RequestCycle.get()).getRequest().getParameterMap();

或這個:

String paramFoo = RequestCycle.get().getRequest().getParameter("foo");

http://www.wicket-library.com/wicket-examples-6.0.x/index.html/有很多例子可以幫助你。

或者看看DWR

http://directwebremoting.org/

DWR允許瀏覽器中的Javascript與服務器上的Java交互,並幫助您使用結果操作網頁。

正如Dorward所說,這是通過AJAX完成的

假設您的意思是在客戶端上運行JavaScript - 您將導致對服務器進行HTTP重定向,並讓您的servlet對給定URL的請求作出反應。

這被稱為Ajax ,並且有許多 可以幫助您實現它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM