我在客户端上有一些 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/