フレームワーク:Spring、Hibernate。 O/S:WindowsHibernateメッセージ補間を実装するときのJavaジェネリックスのエラー
私は、このLinkの指示に従ってhibernateのカスタムメッセージ補間器を実装しようとしています。
以下のクラスを実装すると、「非静的型ロケールへの静的参照を作成できません」というエラーが発生します。
public class ClientLocaleThreadLocal<Locale> {
private static ThreadLocal tLocal = new ThreadLocal();
public static void set(Locale locale) {
tLocal.set(locale);
}
public static Locale get() {
return tLocal.get();
}
public static void remove() {
tLocal.remove();
}
}
私は十分にジェネリックを知っていないので、<ロケール>のTimeFilterの下のクラスと上記のクラスでの定義の目的で使用されているかどうかはわかりません。
public class TimerFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain) throws IOException, ServletException {
try {
ClientLocaleThreadLocal.set(req.getLocale());
filterChain.doFilter(req, res);
}finally {
ClientLocaleThreadLocal.remove();
}
}
public void init(FilterConfig arg0) throws ServletException {
}
}
ウィル大丈夫以下のことをやって? TimeFilter非静的メソッド/フィールド
にClientLocaleThreadLocalで
変更静的メソッド/フィールド、以下のように新しいオブジェクトをインスタンス化することによってロケールを設定。事前にあなたの助けのための 新しいClientLocaleThreadLocal()。セット(req.getLocale())
おかげ
ありがとうございます!たくさんのメリトン。これは私がこれを前進させるのに役立ちます。 ClientLocaleThreadLocalには常にロケールが含まれているため、ここではtypeパラメータは必要ありません。 「常にThreadLocalが含まれていますか? –
Jayaprakash
はい。重要なポイントは 'java.util.Locale'クラスを参照し、' Locale'という型パラメータを宣言したくないということです。 – meriton
ありがとう!メリトン – Jayaprakash