2

私はspring4gwt自分のプロジェクトで使用しています。

次のログインサービスを実装しています。

@Service("loginService")
public class LoginServiceImpl extends RemoteServiceServlet implements LoginService {

    @Override
    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
    public UserBean checkUser(String userName, String password) throws Exception {

        HttpSession httpSession = getThreadLocalRequest().getSession();

    }
}

(ホストモードで)を呼び出すと、実際のセッションの代わりにNULLを返すloginService.checkUser("test","test")ため、NullPointerExceptionが発生します。getThreadLocalRequest()

私はまだウェブモードで試していませんでした。

なぜヌルセッションを取得するのですか?spring4gwtと関係がありますか?

4

1 に答える 1

6

はい、それが原因ですspring4gwt。別のアプローチが必要です。

ここで解決策を見つけましたhttp://code.google.com/p/spring4gwt/issues/detail?id=2 :

web.xml で:

<filter>
    <filter-name>springRequestFilter</filter-name>
    <filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>springRequestFilter</filter-name>
    <url-pattern>/your-url/*</url-pattern>
</filter-mapping>

の代わりに:

 HttpSession httpSession = getThreadLocalRequest().getSession();

使用する :

ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
HttpSession httpSession = attr.getRequest().getSession();
于 2012-10-31T23:29:53.290 に答える