【问题标题】:Wicket AjaxRequestTarget of jQuery callback does not ComponentjQuery 回调的 Wicket AjaxRequestTarget 没有组件
【发布时间】:2014-04-11 01:57:22
【问题描述】:

我正在尝试实现一个 jQuery AJAX 回调来接收第三方 JavaScript 库的事件。

它几乎可以工作了! :)

jQuery AJAX 帖子是服务器端的接收器。回调 URL 由 AbstractDefaultAjaxBehavior 生成,该行为已添加到 Panel。在 Behavior 的响应方法中,我将 Panel 的一个子组件添加到 AjaxRequestTarget。但这不会重新绘制组件。不抛出异常,设置了输出的markupId。

有什么想法吗?任何想法我可以在 GitHub 等中找到一个 wicket 组件做类似的事情。

【问题讨论】:

  • AjaxTabbedPanel 是 wicket-extensions 的一个例子。如果不这样做,请发布您的处理程序代码和相关的组件层次结构创建。
  • 您使用的是 $.post(...) 还是 Wicket.Ajax.post(...)? Wickets post 方法有成功处理程序,它重新绘制组件(据我所知)。
  • 好点@mrak。您需要使用 AbstractDefaultAjaxBehavior#getCallbackFunction
  • 谢谢各位!我做了一个快速入门来验证您的提示并且它有效。问题是,我做了 $post(...)。我对 Wicket.Ajax.post(...) 的参数感到困惑,但 getCallbackFunctionBody(...) 做得很神奇!

标签: jquery wicket behavior jquery-callback


【解决方案1】:

我的解决方案基于上面的 cmets。通过 AjaxCallback 更新的简单标签:

公共类主页扩展网页{ 私有静态最终长序列版本UID = 1L; 私有字符串值 = "Hello World"; 公共主页(最终页面参数参数){ 超级(参数); 最终标签 label = new Label("label", new PropertyModel(HomePage.this, "value")); label.setOutputMarkupId(true); 添加(标签); label.add(new DemoCallback(){ @覆盖 protected void onCallback(String fromClient, AjaxRequestTarget 目标) { 价值=来自客户; 目标.添加(标签); } }); } }

呈现回调的行为:

公共类 DemoCallback 扩展 AbstractDefaultAjaxBehavior { @覆盖 公共无效渲染头(组件组件,IHeaderResponse响应){ super.renderHead(组件,响应); StringBuffer 脚本 = new StringBuffer(); script.append("alert('回调将随之而来!');\n"); script.append("var dataForServer='来自客户的爱。';\n"); script.append(getCallbackFunctionBody(CallbackParameter .explicit("dataForServer"))); response.render(OnEventHeaderItem.forScript( "'" + component.getMarkupId() + "'", "click", script.toString())); } @覆盖 受保护的无效 updateAjaxAttributes(AjaxRequestAttributes 属性){ super.updateAjaxAttributes(属性); 属性.setMethod(Method.POST); } @覆盖 受保护的无效响应(AjaxRequestTarget 目标){ StringValue parameterValue = RequestCycle.get().getRequest() .getPostParameters().getParameterValue("dataForServer"); onCallback(parameterValue.toString(), 目标); } protected void onCallback(String fromClient, AjaxRequestTarget 目标) { // 覆盖处理回调 } }

在头部呈现什么检票口:

Wicket.Event.add('label1', "click", function(event) { alert('回调将随之而来!'); var dataForServer='来自客户的爱。'; var attrs = {"u":"./?0-2.IBehaviorListener.0-label","c":"label1","m":"POST"}; var params = {'dataForServer': dataForServer}; attrs.ep = 参数; Wicket.Ajax.ajax(attrs); ;});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    • 2011-01-17
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    相关资源
    最近更新 更多