javascript - Wicket:通过ajax上传数据

标签 javascript ajax wicket wicket-6

我在客户端上有一些 javascript 数据,我想将其传递给我的 Wicket 组件 java 代码进行处理(例如持久化)。

在按钮上使用 saveButton.addButtonListener(WICKET_ID_SAVEBUTTON, null, this); 让 Wicket Controller (Java 中)知道该按钮是通过 ajax 单击的。

如何通过 additionalData 或其他方式传递一些数据(例如 var mydata = ["duck", "duck", "goose"])?

@Override
public void onButtonClick(String clickedButtonId, Object additionalData, AjaxRequestTarget renderTarget)

谢谢! PS:我使用的是 Wicket-6

最佳答案

您可以使用 AbstractDefaultAjaxBehavior 并让您的保存按钮调用该函数。

将行为添加到您的页面:

AbstractDefaultAjaxBehavior bum = new AbstractDefaultAjaxBehavior()
{
  @Override
  protected void respond(AjaxRequestTarget _target)
  {
    String data = RequestCycle.get().getRequest().getRequestParameters().getParameterValue("data").toString();
    // parse and save data
  }
};
myComponent.add(bum); // needed to allow access to getCallbackUrl()

重写页面中的 renderHead 并将 AjaxBehavior 设置为 JavaScript 函数

@Override
public void renderHead(IHeaderResponse response)
{
  super.renderHead(response);
  response.render(JavaScriptHeaderItem.forScript("function myFunction(data) {Wicket.Ajax.get({'u':'"+ bum.getCallbackUrl() +"&data=' + data})}", "myFunction"));
}

然后让标记中的保存按钮使用要保存的数据调用 myFunction(data)。

关于javascript - Wicket:通过ajax上传数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26790376/

相关文章:

javascript - Angular 将输入类型 ="email"验证为类型 ="text"

javascript - 调整大小时 jQuery 的小错误?

jquery - 无法使用 jQuery 从其他站点获取 HTML 页面($.get、$.ajax)

java - 错误: Not detached model found

java - Wicket 主页初始加载时模型未更新

javascript - 上传前可以在 html 表单上调整图像(客户端)的大小吗?

javascript - ajax 请求不使用 jQuery 发送任何数据 ASP.NET MVC 项目

javascript - 单击按钮时使用 $.Ajax 获取、更新和将 JSON 放回服务器

javascript - $.ajax 不返回跨域 url 上的错误函数

java - Wicket 面板(对话框)无法正常工作?