0

我有一个奇怪的问题。

我需要在服务器交互结束时真正执行代码。所以,如果我使用 jsp,我需要在页面渲染之后执行它。

有办法执行吗?

我在这个切入点之后尝试过

@Pointcut("@annotation(org.springframework.web.bin d.annotation.RequestMapping)")

但它在“返回 ModelAndView”之后就离开了我。我需要结束服务器会话。

我想这样做是因为我需要关闭 Hibernate 会话,避免由于在 jsp 呈现视图后关闭会话而导致的延迟初始化异常,并且我想避免脚本让喜欢

<% HibernateManager.getSession().close() %> 

有效地将视图与模型耦合

4

1 回答 1

2

你可以有一个 spring-mvc 拦截器 - implementHandlerIntercepetorafterCompletion(..)方法。您也可以在过滤器中执行此操作。

但是你没有两个,原因有两个:

  • 您不应该将未初始化的集合传递给您的视图。在服务层初始化你需要的一切,那么你就不会有 LazyInitializationException。事实上,避免惰性集合
  • 即使您决定使用惰性集合,而不是在服务中初始化它们,spring 也会为您提供OpenEntityManagerInViewInterceptor(and Filter) 和OpenSessionInViewInterceptor(and Filter) 来满足您的需求。
于 2012-04-20T19:45:52.637 回答