JSF2 + CDI (weld) beans + Eclipse Helios 的内容辅助

8
我正在尝试在Eclipse Helios中使用JSF2 CDI(weld)bean代替ManagedBeans,但无法在表达式语言中为我的Named bean进行自动完成(#{myNamedBean.Ctrl+Space})。然而,在ManagedBeans中,内容辅助功能正常工作。 Eclipse Helios是否支持CDI bean的内容辅助功能? 有人有相关经验吗?
3个回答

13
  1. 安装 JBoss 工具。通过在 .project 文件的 natures 部分添加 <nature>org.jboss.tools.jsf.jsfnature</nature>,可以改善我的 Eclipse J2EE Helios 版本中的支持。 (这一步可能相当于在项目设置中进行“配置-> 添加 JSF 能力”)。然后,在构建组件组合时,对于cc.attrs.<ctrl-space>,上下文完成工作,但遗憾的是对于任何@ManagedBean都无法正常工作。

  2. 从 ManagedBeans 切换到 CDI:我将所有的@ManagedBean更改为@javax.inject.Named,并将作用域更改为@javax.enterprise.context.*Scoped等。我还在项目设置中启用了 CDI 支持。然后,在.xhtml文件中的 bean 上获得了上下文完成!

第一个限制:它仅在 EL 是属性值的一部分时才起作用。如果您只是在.xhtml页面的其他地方使用#{EL},则不会起作用。

第二个限制:如果您通过常量定义 bean 的名称,则无法识别其上下文完成。不起作用:@Named(value = MyBean.BEANNAME)。您必须将名称设置为字符串,如:@Named(value = "myBean")

第三个限制:如果使用参数化的方法调用(例如 Tomcat7 或 Glassfish),则自动完成不支持此功能。自动完成只显示 bean 的 get/set/is 属性。

注意:在 Netbeans 7 中,它可以直接使用。


当我们在.project文件中添加<nature>org.jboss.tools.jsf.jsfnature</nature>时,部署项目到Glassfish或在Eclipse中使用Glassfish插件会有任何问题吗?如果我们不想安装所有JBoss工具,那么我们必须安装哪些JBoss工具才能获得Facelets内容辅助功能? - Svetoslav Marinov
第一句:我认为Glassfish不会有任何问题。 第二句:尝试所有名称中带有JSF和CDI的内容。 - alfonx
使用Eclipse Kepler和JBoss Tools 4.1.0.1:@ManagedBean可以工作,EL表达式的自动完成在任何地方都可以工作,而不仅仅是在属性中,参数化方法调用也可以自动完成。 - prunge
4
对于已经安装了 JBoss Tools 的 CDI Bean,右击项目,然后配置 -> 添加 CDI(上下文和依赖注入)支持... - Vinícius Fonseca

2

谢谢您提供的信息,但我想找一些不仅限于 JBoss 的东西。 - Bertie
@Albert Kam 这是一个针对Eclipse的插件,我认为。 - Bozho

0
在安装JBoss Tools之前,请注意,为了实现EL自动完成支持和托管的Bean映射,您只需要从JBoss工具集中获取这两个组件即可。
1. JBoss Tools JSF
2. JBoss Tools Visual Page Editor

如果您不选择这些特定的工具,则会安装所有20多个工具。

此外,请注意,有时在安装工具后,您的默认文件*.xhtml关联可能不会更改。您可能需要手动更改文件关联首选项。文件>首选项>文件关联。选择*.xhtml并将“JBoss Tools Visual Page Editor”设置为默认编辑器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接