如果我能做到这一点,我如何在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中的任何组件。在您的浏览器中触发OnDomReady事件后,在加载页面时,Wicket将使其成为js enging,使用Ajax回调您的代码到上面显示的“响应”方法,此时您可以在服务器,并可能将组件添加到要重新呈现的ajax目标。

要从js手动执行,您可以通过将getCallbackScript()。toString()打印到wicket组件上的属性来挂钩到wicket的系统,然后您可以从js访问该属性。用wicket的wicketAjaxGet手动从js手动调用这个url来自wicket-ajax.js。

查看关于此主题的大量对话的邮件列表: http://www.nabble.com/Wicket-and-javascript-ts24336438 html的#a24336438

其他提示

摘自 https://cwiki.apache.org/WICKET/主叫检票从 - 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

$ url $ 是从方法 abstractDefaultAjaxBehavior.getCallbackUrl()获得的。如果将从该方法返回的String粘贴到浏览器中,则会调用response方法,这同样适用于javascript方法。

您可以选择通过将这些参数附加到URL字符串来添加参数。它们采用& foo = bar 形式。

您可以在Java响应方法中获取可选参数,如下所示:

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

或者这个:

String paramFoo = RequestCycle.get().getRequest().getParameter("foo");
+ '$args

$ url $ 是从方法 abstractDefaultAjaxBehavior.getCallbackUrl()获得的。如果将从该方法返回的String粘贴到浏览器中,则会调用response方法,这同样适用于javascript方法。

您可以选择通过将这些参数附加到URL字符串来添加参数。它们采用& foo = bar 形式。

您可以在Java响应方法中获取可选参数,如下所示:

<*>

或者这个:

<*>, function() { }, function() { }); }

$ url $ 是从方法 abstractDefaultAjaxBehavior.getCallbackUrl()获得的。如果将从该方法返回的String粘贴到浏览器中,则会调用response方法,这同样适用于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交互,并帮助您使用结果操作网页。

Dorward提到这是通过AJAX完成的

假设您的意思是在客户端上运行JavaScript - 您将导致对服务器进行HTTP重定向,并让您的servlet对给定URL的请求作出反应。

这被称为 Ajax ,并且有一个数字 图书馆可以帮助你做到这一点..

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top