我有一个wicket页面,在表单提交上我会重定向到另一个页面。我有这个:
@Override
protected void onSubmit()
{
//Do something
response.sendRedirect(previousPageUrl);
}
页面被正确重定向,但我遇到了这个例外:
[org.apache.wicket.protocol.http.WebResponse] [Unable to redirect to:..., HTTP Response has already been committed.]
[org.apache.wicket.protocol.http.WicketFilter] [closing the buffer error]
java.lang.IllegalStateException: Committed
at org.eclipse.jetty.server.Response.resetBuffer(Response.java:1059) ~[na:na]
at org.eclipse.jetty.server.Response.sendRedirect(Response.java:449) ~[na:na]
at org.apache.wicket.protocol.http.WebResponse.sendRedirect(WebResponse.java:299) ~[wicket-1.4.17.jar:1.4.17]
at org.apache.wicket.protocol.http.WebResponse.redirect(WebResponse.java:250) ~[wicket-1.4.17.jar:1.4.17]
at org.apache.wicket.protocol.http.BufferedWebResponse.close(BufferedWebResponse.java:67) ~[wicket-1.4.17.jar:1.4.17]
我已经尝试在sendRedirect()
来电之前添加此行,但它没有帮助:
getRequestCycleSettings().setRenderStrategy(IRequestCycleSettings.ONE_PASS_RENDER);
答案 0 :(得分:1)
我对您的代码的第一印象是,在// do something
中,您可能已经向response
对象写了一些内容。您可以尝试先提交这些代码以隔离问题或将整个// do something
粘贴到此处,以便我们为您提供更好的帮助。
答案 1 :(得分:1)
你必须打断Wicket的请求处理:
throw new RedirectToUrlException(previousPageUrl);