问题标签 [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.
jsf-2 - JSF bean:设置 ViewParam 后调用 @PostConstruct 函数
我有一个 product.xhtml 和一个 ProductBean。我使用 /product/{id} 来访问产品,因此我在 product.xhtml 中有一个 viewParam,其 value=ProductBean.id。问题是在 bean 内部,我使用带有 PostConstruct 注释的 init 函数来填充产品的详细信息。为此,我需要 id 来调用外部函数。我想尽管在 viewParam 设置 bean 的 id 之前调用了 init,因此在 init 内部我无法调用外部函数,因为 id 尚未设置。我做错了什么,我该如何解决这个问题?
更新
我发现出了什么问题。我认为 viewParam 方法适用于 CDI bean,但 ManagedProperty 方法适用于 JSF bean..
我现在还有另一个问题。我的 CDI bean 是 RequestScoped,当 product.xhtml 被渲染时,bean 被创建,我猜后来被丢弃了。有趣的是,我在该 bean 中有一个函数,当我调用它时,我可以读取 id(我假设这是因为连接到视图参数而发生的),但不能读取任何其他属性。任何想法如何解决这一问题?
glassfish - GlassFish 3.1.2 中 PostConstruct 方法的 EJB 查找
在 Glassfish 3.1.2 上部署 ear 并尝试从 Web 服务中的 @PostConstruct 方法查找 EJB bean:
并得到
[#|2012-04-25T10:15:54.768+0300|SEVERE|glassfish3.1.2|browser.service.BrowserWS|_ThreadID=22;_ThreadName=admin-thread-pool-4848(4);|javax.naming.NamingException : 在 SerialContext [myEnv={java.naming.factory.initial=com.sun.enterpri se.naming.impl.SerialInitContextFactory, java.naming.factory.state=com 中查找“java:comp/env/BrowserService”失败。 sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.ur l.pkgs=com.sun.enterprise.naming} [根异常是 javax.naming.NamingException: Invocation exception: Got null ComponentInvocation]在 com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518) 在 com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
当我尝试从网络方法做同样的事情时,一切正常。
那么,为什么我不能从 @PostConstruct 方法中查找 bean?
根据规范,JNDI 可以从 PostConstruct 访问 java:comp/env ...
谢谢
升级版:
BrowserService 在 web.xml 中声明为
java - 如何使用 Spring 测试具有 @PostConstruct 方法的类的构造函数?
如果我有一个带有@PostConstruct 方法的类,我如何使用JUnit 和Spring 测试它的构造函数以及它的@PostConstruct 方法?我不能简单地使用 new ClassName(param, param) 因为它没有使用 Spring——@PostConstruct 方法没有被触发。
我在这里遗漏了一些明显的东西吗?
我有一些类似的东西(虽然稍微复杂一些),并且@PostConstruct 方法没有受到影响。
servlets - @PostConstruct 在 JBoss 5 中不起作用
我有一个无法更改的 servlet(com.sun.jersey.spi.container.servlet.ServletContainer
来自 Jersey RS)。我能做的是创建它的子类。但是,我需要在初始化 servlet 时运行我的子类的一个函数。我无法覆盖该init
方法,因为它具有泽西岛代码。
我尝试@PostConstruct
在方法上使用注解使其在初始化后运行,但它不起作用(但它在 Tomcat 6 下确实有效)。在web.xml
类中设置为在启动时运行。
jsf - @PostConstruct 在 @FacesValidator 中不起作用
验证器不支持 post 构造注释吗?
我有一个应用程序范围的 jndi servicelocator bean,我将它作为托管属性注入到我的验证器中。
用于初始化我必要的远程 bean 的 post 构造注释方法永远不会被调用,因此我的远程 bean 保持为空。
java - 弹簧单例被调用两次
在我的 Spring 应用程序中遇到一些问题。
我有非常简单的春豆,它们被注入到其他各种春豆中。在调试时我发现它们被调用了两次,Constructor 和@PostConstruct 都被调用了两次。
我的应用程序没有前端技术。它只是与后端任务相关。
弹簧配置
Spring Bean 类
构造函数“TransactionDAO”被调用了两次。
我试图通过以下方式观看调用堆栈跟踪
并且每次显示以下内容
java - Spring - 停止bean初始化
我的 bean 实现 InitializingBean 并在 afterPropertiesSet 方法中我想执行验证。
问题是我的验证使用了其他一些尚未完全加载的 bean,比如 JPA bean 之类的 bean。
我还使用@PostConstruct
了注释——这更糟糕,因为这个方法在方法之前调用afterPropertiesSet
。有什么建议可以解决这个问题吗?
spring - Spring3 @PostConstruct 在tomcat启动后变为空,并在尝试在服务类上使用时获取空对象
大家好,我想做的是在@Value和@PostConstruct的帮助下用一些属性预填充一个CustomDetail对象,然后在服务上使用这个预填充的对象,但是当对象到达服务类时,它已经为空了......
更新!!!!这是正确的代码
现在 setProperty() 方法有效地正确完成了它的工作,如果我在调试时启动 Tomcat,我可以看到 propertyPrx 很好,并且 Object prx 不为空......所以 new ProxyObject(propertyPrx) 被调用没有任何问题,此时一切美好的。现在当我移动到服务部分并尝试使用它时
任何想法为什么会发生这种情况以及为什么 @PostConstruct 仅在 Tomcat 首次启动以及我尝试注入服务类时才被初始化,就像它从未被初始化一样,感谢您的帮助......我是使用 SpringMVC 3.1 Tomcat
java - WebSphere 中 @PostConstruct 异常处理的行为
简短:(Portlet-)Container 吞下支持 bean 中 @PostConstruct 方法抛出的异常。
这种行为是故意的,是错误还是容器特定?
Long:我在 WebSphere Portal 7 上运行一个 portlet,我在 PhaseListener 中强制构建托管 bean,以便当系统在 Bean 构建/构建后遇到不可恢复的问题时,它可以将用户发送回起始页面。
我正在使用以下代码来“强制”构造:
我测试了从 @PostConstruct 方法抛出 RuntimeException
堆栈跟踪最终出现在 RAD(Eclipse) 日志中:
但是在我的 PhaseListener 中没有异常可以捕获,并且在 @PostConstruct 期间它会愉快地继续,而不会意识到异常。
这种行为是故意的,是错误还是容器特定?
看起来至少 JBoss 有类似的处理方式:http: //www.coderanch.com/t/499013/JSF/java/PostConstruct-exception-handling
jsf - 在超级 bean 和扩展 bean 上调用 @PostConstruct
我有一个带有@PostConstruct 的BaseBean,还有一个扩展它的bean,我想在它上面调用另一个@PostConstruct。我已经阅读了几个地方说有可能,但是,似乎首先调用了扩展类上的@postConstruct(如果根本调用了第二个)。然后我在“上下文”上得到一个 NPE,因为我假设超级 bean 的 PostConstruct 已经被调用。
这是可行的吗?如果是这样,我做错了什么?
基豆:
扩展豆:
谢谢,尤塔姆。