1

我有非常简单的 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/

4

4 回答 4

2

这个问题没有内置的解决方案。您可以使用一些第三方解决方案,例如 Apache DeltaSpike http://deltaspike.apache.org/,或者您自己使用 CDI 扩展来实现它。

于 2013-10-17T12:10:54.407 回答
0

我真的不知道可以进行这种配置beans.xml(这可能只在 Spring 中有效,但也许有人会纠正我)。初始化值的 CDI 方式是用 注释的方法@PostConstruct,所以试试这个

public class Sample {

    private String text;

    @PostConstruct
    public void init() {
         this.text = "aaa";
    }
}
于 2013-10-03T13:08:08.627 回答
0

您是否尝试过像这样Wrapping an InjectionTarget那样实现 @Observes ProcessInjectionTarget 的 javax.enterprise.inject.spi.Extension ?

此示例从资源包中注入 bean 值。

于 2013-10-08T07:37:41.677 回答
0

在您发布的示例链接中,如果您看到 .xml 文件,它使用包名,然后是类名,因此如果您尝试从 更改<ress:Sample><ress:net.resourceAuth.Sample>它可能会起作用。

于 2013-12-30T22:28:20.920 回答