问题标签 [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 投票
3 回答
22417 浏览

java - @PostConstruct & 检查异常

@PostConstruct文档中,它谈到了带注释的方法:

“该方法不得抛出已检查的异常。”

如何处理例如可以在这种方法中抛出的 IOException ?只需将它包装在一个 RuntimeException 中,让用户担心对象的错误初始状态?或者@PostConstruct 是验证和初始化注入其依赖项的对象的错误位置?

0 投票
1 回答
4819 浏览

jsf-2 - @PostConstruct 在 JSF2 / CDI 中更新其他 SessionScoped Bean 之前调用?

我的应用程序中有一个奇怪的行为:我使用 SessionScope bean (Bean A) 来保存用户偏好。在 RequestScope 中的另一个 Bean (Bean B) 中,我注入了 SessionScope bean。

Bean B 有一个@PostConstruct 方法,可以根据 Bean A 中的值从数据库中检索值列表。当用户更改 Bean A 中的值并且其在 Bean B 中的值当时不正确时,应用程序会感到困惑@调用 PostConstruct 方法。我用日志对其进行了测试。

我认为所有 setter 方法都会在调用应用程序阶段之前更新?

这是一个代码示例:

豆A:

豆B:

示例日志:

如您所见...前两个日志是正确的...如果用户更改首选项(更新 SessionBean),则将使用 JSF 重新呈现视图,并且最后两个日志的顺序不正确,我的应用程序会感到困惑。

谢谢你的帮助。

0 投票
1 回答
9972 浏览

ajax - 即使已经实例化了 ManagedBean(例如在 AJAX 调用上),也会调用 @PostConstruct 方法

我有一个@ViewScope ManagedBean 和一个@PostConstruct 初始化方法。此方法在创建新实例时调用,但也在每次 ajax 调用时调用。为什么会这样?

在 AJAX 调用中,会调用并执行 init-Method,但看不到任何更改。例如,如果我在 init-Method 中更改了一个属性,这仅在实例化时可见,而对于 AJAX 调用不可见。对于 AJAX 调用,值更改不会在 @ViewScoped Bean 中持久存在。

谁能说出为什么会这样?我怎样才能改变这个?

0 投票
1 回答
615 浏览

hibernate - Spring + JPA + Hibernate:启动时没有插入

我在启动时使用@PostConstruct注释执行一个方法。此方法必须检查存储在 DB 表中的值。如果它不存在,那么它必须插入它。对 DB 中的值的检查是正确完成的,但是如果我必须坚持它,它不会将它写入 DB。它不会抛出任何异常并且persist()(显然)没有问题地执行,只有值没有插入到 DB 中。

此外,一旦一切就绪,如果我手动调用该方法(例如从控制器),它将正确插入值。

你知道可能出了什么问题吗?

最好的问候,米格尔

0 投票
2 回答
29134 浏览

java - @PostConstruct 方法为同一个请求调用了两次

我将 JSF 2.0 与 GlassFish 3.0 一起使用。

我有以下托管 Bean:

overview.xhtml文件中,我从OverviewController 调用不同的属性或方法。

一切正常,但问题出在日志文件上:

如您所见,init() 方法在同一个请求中被调用了两次,没有任何原因。据我所知,任何使用PostConstruct注释的方法都会在每个请求中调用一次。我错了吗?

编辑: 页面上没有使用 AJAX。我用萤火虫检查了请求的数量。有树请求:

  • 1.一个用于 javax.faces.resource (GET)
  • 2.一个用于css文件(GET)
  • 3.一个overview.xhtml (GET)
0 投票
1 回答
9949 浏览

jsf - @SessionScoped bean 失去作用域并一直被重新创建,字段变为空

JSF 2.0 项目中的 SessionScoped bean 有一个非常奇怪的问题。使用 Netbeans 6.9.1、Glassfish 3 服务器和 PrimeFaces 3 作为 JSF 组件库。

这是一些代码:

所以基本上我已经将另一个名为 GenreLabelListJSF 的 sessionscoped bean 注入到 LabelDetailJSF 中。我想在数据表中显示 DetailLabelGenreList。这是用于显示数据表的 XHTML 片段

当页面加载时,我最初得到包含一些行的表格。当我单击分页按钮时,这就是乐趣开始的地方。

我检查了所有 System.out 语句的输出,并在页面最初加载时发现了以下内容。

当我单击数据表的页面按钮时,我得到以下信息:

从我所见,这几乎就像 bean 失去了范围并一直在重新创建。最初这些值在那里,然后当分页开始时 bean 失去值。例如,我注意到@ManagedProperty bean 在分页开始时也变为空。这有点疯狂,因为它也是一个会话范围的 bean。

仍然是 JSF 的新手,所以我可能犯了一些菜鸟错误。必须提到,我最初确实将其创建为 ViewScoped bean,并且在将 bean 更改为 SessionScoped 后,我取消了应用程序重新启动 Glassfish 并再次构建和部署它。

有任何想法吗?

0 投票
1 回答
2130 浏览

java - MyFaces - 抽象类上的@PostConstruct

我正在尝试执行抽象类中的 PostConstruct 注释方法,

但是当创建测试时没有调用init方法,是错误吗?不支持的功能?不正确的代码?

在 Mojarra 2.1.6 上它可以工作

MyFaces 2.1.6,Glassfish 3.1.2-b23

0 投票
2 回答
76018 浏览

jsf - 何时使用 f:viewAction / preRenderView 与 PostConstruct?

什么时候应该使用f:viewActionorpreRenderView事件来初始化页面的数据而不是使用@PostConstruct注释?是否基于支持 bean 的范围类型使用一个或另一个的基本原理,例如如果支持 bean 是@RequestScoped,那么在呈现视图之前选择使用f:viewActionpreRenderView结束@PostConstruct来初始化支持 bean 是否无关紧要,因为两者将产生同样的效果?

f:viewAction 或 preRenderView

或者

@PostConstruct

0 投票
1 回答
2226 浏览

jsf-2 - Weblogic 12c JSF 不调用(忽略)@PostConstruct

总之,带有@PostConstruct 的方法不是由JSF 在WebLogic12c 上的托管bean 上调用的。

我有一个非常基本的应用程序。

使用的技术:JSF2.0

应用服务器:WebLogic 12c

爪哇

XHTML

当托管 bean 是 JSF 的实例时,创建托管 bean beanTest,(在普通构造函数中输入)但不要使用 PostConstruct 输入(忽略,不调用)方法。

使用 WebLogic 显示的文本:Enter to Construct 预期的文本,但没有使用 WL 显示:Enter to Construct - Enter to PostConstruct

该应用程序已部署在其他应用程序服务器上:

  • 玻璃鱼 3.1.1
  • 玻璃鱼 3.1.2
  • 雄猫 7.0.22

并显示预期的结果。

该问题仅发生在 JSF 托管 bean(请求、会话、视图、应用程序)上,如果使用 CDI,则调用 PostConstruct。但我需要使用 JSF ViewScoped 注释。

有什么想法的人吗?

0 投票
3 回答
16126 浏览

jsf - 如何在页面加载期间添加 FacesMessage?使用 @PostConstruct 似乎不起作用

在支持 bean 的 @PostConstruct 方法中,我调用了一个 EJB,它可能会返回一些我想通过 p:messages 显示在页面上的消息。然而,即使我添加了 FacesMessages,例如 FacesContext.getCurrentInstance().addMessage(...),p:messages 也不会被 FacesMessages 更新。

如果我改为对来自页面的操作调用 EJB(例如,用户单击页面上的按钮,该按钮调用调用 EJB 的方法,然后添加 FacesMessage(s)),则消息显示使用 p :messages 符合预期。

如何在 @PostConstruct 期间添加 Faces 消息并在最初呈现页面时显示它们?

代码:

Page1Controller.java:

page1.xhtml