页面重定向上的Wicket异常

时间:2013-08-01 17:57:53

标签: java wicket

我有一个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);

2 个答案:

答案 0 :(得分:1)

我对您的代码的第一印象是,在// do something中,您可能已经向response对象写了一些内容。您可以尝试先提交这些代码以隔离问题或将整个// do something粘贴到此处,以便我们为您提供更好的帮助。

答案 1 :(得分:1)

你必须打断Wicket的请求处理:

 throw new RedirectToUrlException(previousPageUrl);