我有非常简单的CDI bean:
package net.resourceAuth;
public class Sample {
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
现在我想使用text
初始化beans.xml
变量。我正在尝试像这样的beans.xml
文件:
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:res="urn:java:net.resourceAuth"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
<res:Sample>
<res:text>test123</res:text>
</res:Sample>
</beans>
但它不起作用。 text
始终为空。你能帮我弄清楚这里有什么问题吗?
换句话说:我正在寻找一个类似的解决方案,因为它在JSF faces-config.xml中使用,例如:http://www.mkyong.com/jsf2/configure-managed-beans-in-jsf-2-0/
答案 0 :(得分:2)
此问题没有内置解决方案。您可以使用某些第三方解决方案,例如Apache DeltaSpike http://deltaspike.apache.org/,或者使用CDI扩展来自己实现。
答案 1 :(得分:0)
我真的不知道这种配置可以在beans.xml
中进行(这可能仅适用于Spring,但也许有人会纠正我)。 CDI初始化值的方法是用@PostConstruct
注释的方法,所以试试这个
public class Sample {
private String text;
@PostConstruct
public void init() {
this.text = "aaa";
}
}
答案 2 :(得分:0)
您是否尝试实现@Observes ProcessInjectionTarget的javax.enterprise.inject.spi.Extension Wrapping an InjectionTarget?
此示例从资源包中注入bean值。
答案 3 :(得分:0)
在您发布的示例链接中,如果您看到.xml文件,则会使用包名称,然后使用类名称,因此如果您尝试从<ress:Sample>
更改为<ress:net.resourceAuth.Sample>
,则可能会有效。< / p>