Wicket 6.x 或 7.x 中的 configureResponse()

configureResponse() in Wicket 6.x or 7.x

我在 wicket 1.4.9 中使用下面的 configureResponse()

protected void configureResponse() {
        super.configureResponse();
        WebResponse response = getWebRequestCycle().getWebResponse();
        response.setHeader("Cache-Control", "no-cache, max-age=0,must-revalidate, no-store");
        response.setHeader("Expires", "-1");
        response.setHeader("Pragma", "no-cache");
        response.setCharacterEncoding("text/html; charset=utf-8");
        response.setLocale(new Locale(Constants.USER_LANG_PREF_ENG));

    }

所以现在在 wicket 6 中删除了 configureResponse(),取而代之的是 configureResponse(WebResponse response),所以我尝试使用如下所示的方法编写上面的代码,

@Override
    protected void configureResponse(WebResponse response) {
    // TODO Auto-generated method stub
    super.configureResponse(response);

    response.setHeader("Cache-Control", "no-cache, max-age=0,must-revalidate, no-store");
    response.setHeader("Expires", "-1");
    response.setHeader("Pragma", "no-cache");
    final String encoding = "text/html" + getMarkupType() + "; charset=utf-8";
    response.setContentType(encoding);
    final Locale originalLocale = getSession().getLocale();
    getSession().setLocale(new Locale(Constants.USER_LANG_PREF_ENG));

}

谁能告诉我,这段代码与之前的代码一样有效,还是我需要再次修改?

它几乎是一样的,但你并不真的需要它,因为这是 Wicket 无论如何都会为你做的。

检查 super.configureResponse(response);org.apache.wicket.markup.html.WebPage#setHeaders(WebResponse) 的实现。

除此之外:

  • final Locale originalLocale = getSession().getLocale(); - originalLocale 未使用
  • getSession().setLocale(新语言环境(Constants.USER_LANG_PREF_ENG)); - 这可能应该移至 YourApplication#newSession()