Ala*_*ect 7 cdi composite-component jsf-2
我正在编写一个需要与我的DAO交互的(复合)组件.以下是声明Java部分的方式:
@FacesComponent(value="selectLocation")
public class SelectLocation extends UINamingContainer {
Run Code Online (Sandbox Code Playgroud)
为了获取DAO对象,我尝试了CDI注释:
@Inject private LocationControl lc;
Run Code Online (Sandbox Code Playgroud)
这没用,所以我尝试了Faces注释:
@ManagedProperty (value = "@{locationControl}") private LocationControl lc;
Run Code Online (Sandbox Code Playgroud)
两种情况都没有发生 - 属性lc在构造函数完成后最终为null.
我在所有的后台bean中使用CDI,一切正常.这将使用GlassFish 3.1.1中的Weld.有关如何获取资源的任何建议?
我现在有一个解决办法,就是基本上放入CDI等的锅炉板代码.人.应该废除.我现在有这个方法:
public LocationControl getLocationControl() {
if (lc != null) return lc;
FacesContext fc = getFacesContext();
Object obj = fc.getApplication().evaluateExpressionGet(fc, "#{locationControl}", LocationControl.class);
if (obj instanceof LocationControl) lc = (LocationControl) obj;
return lc;
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有人有更好的解决方案.
| 归档时间: |
|
| 查看次数: |
2562 次 |
| 最近记录: |