问题标签 [postconstruct]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
231 浏览

spring - 如何确保“池”bean 获得它需要的所有其他 bean?

我有一个 spring 配置,我在其中定义了数百个扩展的操作MyAction。我有一个池,执行服务可以在其中查找操作。我不能直接使用 appContext,因为每个操作都有一个或多个“键”,执行服务将使用这些“键”,并且池会减少这种依赖关系。

所以池必须能够收集所有类型的bean MyAction(或者更确切地说是扩展的bean MyAction)。

该方法ApplicationContext.getBeansOfType()似乎可以满足我的需要,但是我什么时候可以安全地调用它?

如果我可以在一个方法中调用它会很棒,@PostConstruct但它是否保证 bean 工厂已经看到当时从配置中添加了每个 bean?

注意:几乎我所有的豆子都是@Lazy

0 投票
1 回答
2589 浏览

spring - jsf-spring:未调用 managedbean postconstruct

我宁愿通过这样做来学习,这可能是一个愚蠢的问题,但我找不到任何答案。

我有一个与简单 JDBC 一起使用的 JSF 应用程序。

以“domain.xhtml”为例,它有一个表格,列出了来自“DomainController”bean 的元素。一切都很好,然后我们切换到 JPA。该控制器必须使用服务,因此它被声明为@Component 并从那里包含(@Autowired)服务。除了不再注入我的所有 JSF 注入 (@ManagedProperty),也不再调用我的 @PostConstruct 之外,它也运行良好。

有什么我错过的,或者这种方式有问题吗?

我的 web.xml :

谢谢 !

0 投票
1 回答
576 浏览

jsf - 使用 GET 参数在 JSF 中初始化 SessionBean 的数据

我的导航案例如下。我有一个登录页面,我可以从中导航到商店页面。此商店页面可以使用两种不同的产品目录。这由给定的零售商对象控制。

从商店页面开始,有多个 bean 和页面将依赖于会话中的零售商。切换零售商的事件是来自登录页面的新选择。我可以通过在选择中触发一个动作然后导航到商店页面来控制会话中的零售商。但这必须在 bean 中的一个动作中进行控制。

我的问题是从导航栏直接导航到商店页面的情况。所以我需要一些机制来初始化商店页面中的给定零售商。这必须在该页面所依赖的每个 bean 上执行。这应该通过 GET 参数来完成。我可以在 preRenderView 侦听器处通过复杂的决定来实现这种行为,但我不觉得这是更优雅的方式。

因此,潜在的问题是如何拦截到页面的直接导航,该页面的数据由多个 bean 管理(无论它们的范围如何),并在 session 中引入一些东西,这些 bean 将在它们的操作中使用。

我已经尝试过了(在 SessionScoped bean 中):

1) 如果我使用 @PostConstruct + @ManagedProperty(with param) 我在实例化 bean 时收到错误,因为 bean 是 SessionScoped

2)如果我使用 viewParam + preRenderView 事件,则在事件之前注入参数并获得我想要的行为,但是每次加载页面时都会发生这种情况。

我希望这个初始化只发生一次,并且我想使用 GET 参数。

我该怎么做?

0 投票
1 回答
7552 浏览

jsf - Init 方法在 @Viewscoped bean 中被调用两次

我正在使用 Primefaces 的计划组件。我正在用数据库中的值填充它,当用户从 selectonemenu 中选择某个 ajax 事件时,将触发一个 ajax 事件(我试图只放置相关代码,如果缺少某个东西,请提醒我):

xhtml:

支持豆:

上述代码的输出是:

当用户更改 selectonemenu 中的值时:

它应该只进入init一次方法。但是在changeScopeType触发该函数后,它会进入该init方法并用不相关的数据填充时间表。我认为这可能与@Postconstruct注释有关,但我找不到任何相关的解释。任何人都可以理解原因并提供解决方案吗?

这是完整的页面:

0 投票
1 回答
1445 浏览

spring - 如果我在构建后的类中调用方法,则不注入spring bean

我正在对我的 jsf 托管 bean 属性进行 spring bean 注入,因此出现上述错误。以下是完整的堆栈跟踪:

我的 web xml 如下:

我的应用程序上下文如下:

我的面孔配置如下:

我包括的罐子如下: 在此处输入图像描述

最后,这是我试图注入的一段代码:

好像是直接注入。我在这里错过了什么吗?请指导我。提前致谢。

编辑: 现在,我从类fillTable中删除了@postConstruct注释,从commandButton的“动作”中调用了fillTable并且这个异常消失了,这是否意味着在@postConstruct方法调用期间spring bean仍然不会被注入到属性中?

0 投票
2 回答
3509 浏览

spring - @PostConstruct 在 Grails 服务上静默失败

我认为 Spring 注释应该在 Grails 环境中开箱即用,但我根本无法让它工作。我还尝试了 afterProperties 方法,它也不起作用。

任何人都可以发现错误吗?我需要做一些配置吗?

0 投票
0 回答
918 浏览

jsf-2 - SessionScoped Bean @PostConstruct 调用了两次

我有一个 SessionScoped bean 来管理用户身份验证。如果用户通过身份验证,主页会显示一些附加文本

当页面加载时,我可以看到@PostConstruct在START PHASE RENDER_RESPONSE 6之后被调用(如预期的那样)

当用户单击登录时,我加载了一个表单,我可以看到在用户提交登录时调用了登录方法(身份验证也有效)。此后,用户被重定向回原始页面。在START PHASE RENDER_RESPONSE 6之后,再次调用 loginBean的@PostConstruct !

我检查了导入 import javax.faces.bean.SessionScoped;

我已经阅读了许多关于这个问题的答案,但是仍然不确定如何解决这个问题。有任何想法吗 ?

这是主页

这是 SessionScoped Bean

0 投票
1 回答
1060 浏览

java - 使用 @PostConstruct 时,Hibernate 找不到绑定到线程的会话

我正在修改一个较旧的 Spring 项目,以更多地反映 Spring 3.0.x 中应该如何完成的事情。

我所做的更改之一是对存储库/dao 层。按照最佳实践的建议,我不再从HibernateDaoSupport使用扩展HibernateTemplate,而是SessionFactory直接通过 using使用 Hibernate sessionFactory.getCurrentSession(),它应该与 Spring 3.0.x 及更高版本一起使用。

这对整个项目来说是一个非常大的好处,因为它摆脱了由HibernateTemplate. 但是,我刚刚注意到我不能再调用使用 @PostConstruct 的 Service 方法(或者onStartUp在 XML 应用程序上下文中使用 bean 的属性)

例如,这个方法过去使用 运行得很好HibernateTemplate,但现在 Hibernate 抛出一个异常,抱怨没有会话绑定到线程:

我可以删除这个@PostConstruct方法调用......它是系统中唯一的一个。当应用程序启动以引导新应用程序的数据时调用它。大多数时候,它在生产系统上什么都不做,但是将它用于新创建的测试和开发数据库很方便。

关于为什么以及如何解决它的任何想法?

谢谢!

编辑:这是我的事务管理建议配置:

0 投票
0 回答
207 浏览

jsf-2 - 停止在恢复视图中再次添加人脸消息

我在 post 构造中添加了一些面孔消息。但是当从当前页面导航时,在恢复视图阶段再次调用 postconstruct 并再次添加 faces 消息。

有没有办法防止在恢复阶段添加面孔消息?

我可以检查阶段 ID 而不是添加消息。

但这是正确的方法吗?还有其他方法吗?

0 投票
0 回答
82 浏览

jsf-2 - 如何在 portlet 环境中处理服务调用(每个操作 2 个请求)

在将 portlet (jsr-286) 与 JSF 2.0 一起使用时,我正在寻找会话标志的替代方案。

问题是我必须使用 @PostConstruct 从后端加载数据。原因是portlet 在运行时加载到动态portlet 页面中。因此,当第一次加载 portlet 时,会为 RenderRequest 调用 RESTORE_VIEW,并调用几个 Web 服务来加载一些数据。

当触发页面上的操作时,我在 portlet 运行时遇到了两个请求的问题:首先处理 ActionRequest,再次调用 RESTORE_VIEW,然后 LifeCycle 一直持续到 INVOKE_APPLICATION 结束。现在,处理调用 RESTORE_VIEW 和 RENDER_RESPONSE 的 RenderRequest。

我的 BackingBean 都是 @RequestScoped,这意味着在调用操作时会调用两次 @PostContruct,这会导致性能问题,因为 Web 服务也会被调用两次。现在最简单的想法是在 portlet 中使用会话标志,用于控制何时需要调用后端服务,何时不需要。

这种方法有更好的选择吗?其他人如何处理 Portlet-JSF2-Environment 中的 Bean 初始化?