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

ajax - 每次 AJAX 调用都会调用 JSF 中的 @PostConstruct 方法,即使托管 bean 被赋予了视图范围

给定以下简单的测试用例。

涉及的 JSF 托管 bean:

当按下<p:commandButton>或给定时,除了动作侦听器之外,还会调用该方法 - 。<p:commandLink>init()action()

这不应该发生,因为该init()方法可能具有昂贵的业务服务,不应在每个 AJAX 请求上不必要地调用这些服务。

有没有办法防止这种行为?init()不应在 AJAX 调用上调用该方法。

我正在使用 JSF 2.2.6 和 PrimeFaces 5.0 final。

0 投票
1 回答
1612 浏览

jsf-2 - 在单页加载期间多次注入控制器

每次我导航到一个页面或执行一个操作时,我的 CustomerController 都会被注入多次。我的 CustomerController 是请求范围的,所以我知道每个请求都意味着创建和注入一个新实例,但我所看到的对我来说似乎太过分了。

例如,在我部署我的应用程序(没有错误)后,我导航到该index.xhtml页面。在index.xhtml该页面上,我单击“添加客户”链接,该链接将我带到该customer.xhtml页面。这导致customer.xhtml页面加载时有 16 次 CustomerController 注入!线

CustomerController.init 调用

(和相关的输出)出现 16 次。由于该init方法带有注解,@PostConstruct因此在注入 CustomerController 后调用它。

当我尝试保存一个新客户时,我在我的日志中添加了 1 500 行,这些行来自println我为帮助调试而进行的各种调用。然而,它们中的大多数都是重复的,因为控制器被注入了很多次。

为什么 CustomerController 被注入了这么多次?

我注意到的是,如果我导入javax.enterprise.context.RequestScoped类而不是javax.faces.bean.RequestScoped类,那么我会得到我期望的单次注入行为。我想这意味着问题在于 JSF 和(更有可能)我对 JSF 的使用,而不是我注入 bean 的一般方式。

索引.xhtml

客户.xhtml

客户控制器.java

FormRequestController.java

web.xml

面孔-config.xml

0 投票
0 回答
89 浏览

java - 通过 URL 进入页面后没有调用控制器

我有这个 URL:
https://localhost:8181/Platform2/faces/admin/applicationDetails.xhtml?applicantid=16&applicationid=5
当我在浏览器上介绍这个时,我必须登录才能看到这个页面的内容。它应该显示申请人和应用程序的详细信息(申请人和应用程序是我的 Web maven 项目的实体)。问题是当我这样做时,页面不检索任何内容。当我再次输入 URL 时,会显示所需的内容。我的 JSF 网页是:

我的支持 bean 是:

我在init方法中放了一个断点,进行调试,第一次没有被调用。当我刷新时,bean被调用并且evertything正常工作。为什么第一次没有结果?

0 投票
1 回答
2073 浏览

jsf - bean 的 @PostConstruct 期间的异常不会以正确的方式结束

我的问题很简单(问)。如何在 JSF 应用程序中创建和管理我的异常?

首先,我们将普通请求和 Ajax 请求分开。Omnifaces使用FullAjaxExceptionHandler解决了问题。

好的,现在我的 Ajax 异常遵循 JSF/web.xml路径。下一步是在以下位置创建映射web.xml

那么问题是异常不会匹配上述规则,因为它们已被其他异常类型包装。好的,Omnifaces 再次使用FacesExceptionFilter进行救援。

好的,现在我可以从我的 bean 中抛出异常,例如

不幸的是,这不起作用,因为 Exception 在 bean 初始化期间抛出,而不是在调用方法时抛出。

Omnifacesunwrap方法将停止到 a 的发生,FacesException并且 CDI (Weld) 将在Bean初始化期间将任何异常包装到 FacesException (我假设它符合规范)。

我可以编写自己的 Exception 过滤器,它不会停止展开 a FacesException,您很快就会意识到您可能会比人们想要的更深入地了解堆栈跟踪。

如何在Bean初始化期间管理异常?

0 投票
1 回答
704 浏览

jsf - @PostConstruct 方法 init() 永远不会在 ManagedBean 上调用

我仍然是 JSF 编程的初学者,我正在尝试做一个小例子来了解它是如何工作的。我面临的问题是从未调用托管 bean 的 @PostConstruct 方法(其中的实例从未进行过,并且其中的 println 没有显示任何内容)我尝试了各种托管 bean(会话,请求...),但总是有同样的问题!

我的托管豆:

0 投票
0 回答
112 浏览

jsf-2 - @PostConstruct 数据变为空

我正在使用素面。我有数据p:datatable。我正在对话框中编辑一行。当我快速完成(不到 40 秒)时,一切正常(我可以保存数据),但是如果我编辑数据一段时间,bean(manegedBean,vievscope)中的所有数据都会变成null并且该PostConstruct方法被调用 - 我丢失已编辑的 selectedRow 数据。

0 投票
1 回答
142 浏览

jsf - java.lang.IllegalArgumentException: Der Rückgabetyp der Lebenszyklusmethode [init] muss "void" sein

我正在使用 GlassFish Server 在 NetBeans 中创建一个 java/jsf Web 应用程序。当我尝试部署应用程序时,它失败并出现以下错误:

GlassFish 服务器日志文件:

0 投票
2 回答
444 浏览

java - Spring autowired 对象在 postcontruct 方法中为空

我有以下设置

怎么了 ?

0 投票
1 回答
5666 浏览

jsf - @ViewScoped 的 @PostConstruct 在每个请求上都会被调用

我在 JSF 2.2.7 和 Primefaces 5 中打开对话框时遇到问题。我有一个打开对话框的按钮,问题是每次单击按钮时都会执行 @PostConstruct 方法。为什么?

我只想调用@PostConstruct 1 次,但我不想将范围更改为 Session (使用 @SessionScope 注释它可以完美地工作)。

这是我的看法:

这是我的豆子:

0 投票
0 回答
206 浏览

hibernate - @PostConstruct 正在使用 Hiberante 加载 bean,但 JSF 没有在 dataTable 中显示它们?

所以@PostConstruct init 函数工作正常,我已经用 System.println() 对其进行了测试,但 JSF 仍然没有显示任何信息。任何建议如何解决此问题或如何以其他方式进行?

事件Bean

EventDAO -数据访问对象

系统输出

JSF - 数据表