Wicket:通过ajax上传数据

时间:2014-11-06 22:11:37

标签: javascript ajax wicket wicket-6

我在客户端上使用javascript获取了一些数据,我希望将其传递给我的Wicket Component java代码进行处理(例如,持久化)。

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

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

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

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

1 个答案:

答案 0 :(得分:2)

您可以使用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(数据)。