问题标签 [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.
java - @PostConstruct & 检查异常
在@PostConstruct文档中,它谈到了带注释的方法:
“该方法不得抛出已检查的异常。”
如何处理例如可以在这种方法中抛出的 IOException ?只需将它包装在一个 RuntimeException 中,让用户担心对象的错误初始状态?或者@PostConstruct 是验证和初始化注入其依赖项的对象的错误位置?
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 重新呈现视图,并且最后两个日志的顺序不正确,我的应用程序会感到困惑。
谢谢你的帮助。
ajax - 即使已经实例化了 ManagedBean(例如在 AJAX 调用上),也会调用 @PostConstruct 方法
我有一个@ViewScope ManagedBean 和一个@PostConstruct 初始化方法。此方法在创建新实例时调用,但也在每次 ajax 调用时调用。为什么会这样?
在 AJAX 调用中,会调用并执行 init-Method,但看不到任何更改。例如,如果我在 init-Method 中更改了一个属性,这仅在实例化时可见,而对于 AJAX 调用不可见。对于 AJAX 调用,值更改不会在 @ViewScoped Bean 中持久存在。
谁能说出为什么会这样?我怎样才能改变这个?
hibernate - Spring + JPA + Hibernate:启动时没有插入
我在启动时使用@PostConstruct
注释执行一个方法。此方法必须检查存储在 DB 表中的值。如果它不存在,那么它必须插入它。对 DB 中的值的检查是正确完成的,但是如果我必须坚持它,它不会将它写入 DB。它不会抛出任何异常并且persist()
(显然)没有问题地执行,只有值没有插入到 DB 中。
此外,一旦一切就绪,如果我手动调用该方法(例如从控制器),它将正确插入值。
你知道可能出了什么问题吗?
最好的问候,米格尔
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)
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 并再次构建和部署它。
有任何想法吗?
java - MyFaces - 抽象类上的@PostConstruct
我正在尝试执行抽象类中的 PostConstruct 注释方法,
但是当创建测试时没有调用init方法,是错误吗?不支持的功能?不正确的代码?
在 Mojarra 2.1.6 上它可以工作
MyFaces 2.1.6,Glassfish 3.1.2-b23
jsf - 何时使用 f:viewAction / preRenderView 与 PostConstruct?
什么时候应该使用f:viewAction
orpreRenderView
事件来初始化页面的数据而不是使用@PostConstruct
注释?是否基于支持 bean 的范围类型使用一个或另一个的基本原理,例如如果支持 bean 是@RequestScoped
,那么在呈现视图之前选择使用f:viewAction
或preRenderView
结束@PostConstruct
来初始化支持 bean 是否无关紧要,因为两者将产生同样的效果?
f:viewAction 或 preRenderView
或者
@PostConstruct
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 注释。
有什么想法的人吗?
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