2

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

在按钮上使用saveButton.addButtonListener(WICKET_ID_SAVEBUTTON, null, this);一个按钮可以让 Wicket 控制器(在 Java 中)知道该按钮是通过 ajax 点击的。

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

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

谢谢!PS:我正在使用 Wicket-6

4

1 回答 1

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(data)。

于 2014-11-07T18:54:33.190 回答