3

您好,我正在使用 GWTP 进行应用程序开发。在应用程序中,我需要服务器端会话实例以将一些数据放入该会话实例中。我看到了一些 GWT 的例子,其中有扩展 ActionSupport 类的 Action 类。示例中有一些方法,我们可以通过这些方法获得服务器端会话实例。如下所示:

public HttpServletRequest getRequest() {
        return ServletActionContext.getRequest();
    }

public HttpServletResponse getResponse() {
    return ServletActionContext.getResponse();
}

public HttpSession getSession() {
    HttpSession session = getRequest().getSession();
    return session;
}

但我在 GWTP 中没有得到类似的东西。请帮帮我。提前致谢。

4

2 回答 2

4

最后我得到了一些对我有帮助的东西。我在这里分享这个。

private Provider<HttpServletRequest> requestProvider;
private ServletContext servletContext;


@Inject
public LoginCallerActionHandler(
        Provider<HttpServletRequest> requestProvider,
        ServletContext servletContext) {
    super();
    this.requestProvider = requestProvider;
    this.servletContext = servletContext;
}

这是我的动作处理程序类。我可以在其中使用会话。

servletContext.setAttribute(SessionKeys.LOGGEDIN_USER.toString(), returnObject.getLoggedInUser());
于 2011-08-24T14:37:35.687 回答
1

如果您在服务器端使用 Spring 或 Guice,您可以将请求/响应注入到您的操作中。例如,如果您正在使用 GWTP 的DispatchServletModule,您可以使用 Guice 的ServletModule的功能:

DispatchServletModule 扩展了 Guice ServletModule 并将请求 URL 映射到处理程序类。

这是来自Guice wiki的示例:

@RequestScoped
class SomeNonServletPojo {

  @Inject
  SomeNonServletPojo(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
    ...
  }

}

我不确定 GWTP 是否在 Singleton 范围内绑定处理程序。如果它确实在单例中绑定它,则应该注入一个提供者。

于 2011-08-17T11:41:48.990 回答