2

私はこのトピックを多くの場所で調べ、いくつかの方法を見つけました。この特定のシナリオでは、参照としてhttps://cwiki.apache.org/confluence/display/WICKET/Calling+Wicket+from+Javascriptの記事を使用しました。

私がJavaでやったこと、

public class HomePage extends WebPage {
    private static final long serialVersionUID = 1L;

    public HomePage(final PageParameters parameters) {
        super(parameters);


        final AbstractDefaultAjaxBehavior behave = new AbstractDefaultAjaxBehavior() {
            protected void respond(final AjaxRequestTarget target) {
                target.add(new Label("foo", "Yeah I was just called from Javascript!"));
            }

            public void renderHead(Component component,IHeaderResponse response){

                String componentMarkupId = component.getMarkupId();
                String callbackUrl = getCallbackUrl().toString();

                response.render(JavaScriptHeaderItem.forScript("var componentMarkupId='"+componentMarkupId+"'; var callbackUrl='"+callbackUrl+"';","values"));
            }
        };

        add(behave);

    }

}

そして私のHomePage.html、

<!DOCTYPE HTML>
<html>
<body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript">
    $(function() {
        var wcall = Wicket.Ajax.get({ u: '${callbackUrl}' + '' });
        alert(wcall);
    });
</script>
</body>
</html>

私がやろうとしたことは、初期化した変数を使用して get ajax メソッドを呼び出すことです。しかし、私のページが読み込まれると、firebug コンソールに次のように表示されます。

ReferenceError: Wicket is not defined
[Break On This Error]    

var wcall = Wicket.Ajax.get({ u: '${callbackUrl}' + '' });

ここで何がうまくいかなかったのですか?

Javascript から Java Function を呼び出す他の良い方法はありますか?

4

2 に答える 2

1

通常、renderHead などのオーバーライドされたメソッドが super.renderHead 呼び出しを行うことを確認することによって、ウィケット JavaScript をページに追加する必要があります。

于 2013-07-04T09:12:33.893 に答える