我在客户端上使用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
答案 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(数据)。