2
我創建了SessionListener
,但它不起作用,因爲我不知道如何在faces-config.xml
中註冊它。我試過如下:jsf - 在faces-config中註冊SessionListener
SessionListener
public class SessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent arg0) {
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
String param = request.getParameter("language");
IDAdminLanguage idl = (IDAdminLanguage) JSFUtils.resolve("#{languageBean}");
if (param != null && param.length() > 0) {
idl.setLanguage(param);
} else {
idl.setLanguage("de");
}
}
@Override
public void sessionDestroyed(HttpSessionEvent arg0) { }
}
面孔,配置
<listener>
<listener-class>ch.idadmin.util.SessionListener</listener-class>
</listener>
您的代碼中存在一個主要的錯誤。在創建會話期間'FacesContext'不一定可用。不要在'HttpSessionListener'中使用'FacesContext'。或者,不要使用'HttpSessionListener',而是使用'IDAdminLanguage'的(後)構造函數。 – BalusC 2012-04-17 11:52:16