use*_*888 7 eclipse jsf attributes code-completion composite-component
我在Eclipse中使用JSF 2.0开发了复合组件.我一直把我的XHTML标签文件放在resources文件夹中.
当我在键盘上按ctrl+ space时,标签的属性不会显示.
我找到一些提示安装"Jboss工具",但没有工作.
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:cc="http://xmlns.jcp.org/jsf/composite"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:f="http://xmlns.jcp.org/jsf/core"
      xmlns:p="http://primefaces.org/ui">
    <cc:interface>
        <cc:attribute name="value"/>
        <cc:attribute name="label"/>
        <cc:attribute name="masculino" default="true"/>
    </cc:interface>
    <cc:implementation>
        <p:selectOneMenu value="#{cc.attrs.value}" label="#{cc.attrs.label}">
            <f:selectItem itemValue="#{null}"
                          itemLabel="#{cc.attrs.masculino ? lbl['LABEL.TODOS'] : lbl['LABEL.TODAS']}" />
            <f:selectItem itemValue="true" itemLabel="#{lbl['LABEL.SIM']}" />
            <f:selectItem itemValue="false" itemLabel="#{lbl['LABEL.NAO']}" />
        </p:selectOneMenu>                                  
    </cc:implementation>
</html>
以上是创建的一个标签的一个示例.
谢谢
自 Eclipse Helios(3.6 版,2010 年 6 月发布)以来,JSF 2.x Facelets 支持集成在“面向企业 Java 开发人员的 Eclipse IDE ”中(注意Enterprise,因此不是“面向 Java 开发人员的 Eclipse IDE”)。您需要确保在项目属性的Project Facets部分中启用了JavaServer Faces facet ,并将其设置为最低版本 2.0。
这通常可以在新建动态 Web 项目向导中进行配置,但是在导入非 Eclipse 项目或创建非动态 Web 项目项目(例如 Maven 原型)时,您需要手动检查/添加它。
集成后,JSF 标记自动完成功能默认可用于java.sun.comXML 命名空间。
xmlns.jcp.org默认情况下无法识别新的命名空间(当前测试的 Eclipse 版本是 Luna SR2)。
新的xmlns.jcp.org命名空间只有在您添加了一个物理 JSF 2.2 实现来构建具有 JSF 2.2 模块的成熟 Java EE 容器风格的路径时才有效,通过一个不错的服务器插件集成并在项目的属性中设置为目标运行时,或者一个具体的 JSF 2.2 实现 JAR 文件在/WEB-INF/libTomcat 和克隆的情况下(或通过将其添加为 Maven 依赖项)。
它只是仍然无法识别新 XML 命名空间中的组合。当改回 时java.sun.com,复合组件标签的代码补全又回来了,但这些标签上的属性的代码补全不可用。
然后我为 Eclipse Luna安装了JBoss Tools 4.2.3并在项目的属性中启用了JBoss Tools 知识库。
关闭并重新打开 Facelet(因此 JBoss 内置 HTML 编辑器被打开;您可以设置/配置右键单击使用的编辑器,打开方式),并切换到源选项卡(请不要使用可视化编辑器,这是一场灾难) ,我终于得到了复合组件上属性的代码补全。
只有xmlns.jcp.org仍然没有工作。这是一个 Eclipse 特定问题,可能已经在 Mars 或更新版本中修复。您始终可以将复合命名空间隐藏在自定义 XML 命名空间后面,如下所示:
/WEB-INF/my.taglib.xml
<?xml version="1.0" encoding="UTF-8"?>
<facelet-taglib
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibrary_2_2.xsd"
    version="2.2"
>
    <namespace>http://example.com/my</namespace>
    <composite-library-name>components</composite-library-name>
</facelet-taglib>
/WEB-INF/web.xml
<context-param>
    <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
    <param-value>/WEB-INF/my.taglib.xml</param-value>
</context-param>
所以总结一下:
xmlns.jcp.org支持标准标签。java.sun.com在复合标记上使用XML 命名空间域或自定义标记库(或更新的 Eclipse 版本)。我正在使用带有 Java EE 包、Hibernate 工具和 Spring IDE 的 Eclipse Mars,我刚刚检查过它开箱即用。
确保您的组件位于webapp/resources/YOUR_COMP_NAME.
忽略这一点,请参阅下面的版本: 检查您的标头命名空间composite,在您的示例代码中
xmlns:cc="http://xmlns.jcp.org/jsf/composite"
但在我的代码中我有
xmlns:composite="http://java.sun.com/jsf/composite"
它不介意你是否使用ccprcomposite前缀,但正如你所看到的,URL 是不同的。请参阅此文档
最后,当您在任何 xhtml 页面中使用此组合时,请按如下方式包含它:
xmlns:prefix="http://java.sun.com/jsf/composite/YOUR_COMP_NAME"
这样,当您在 eclipse 中编写<prefix:并按ctrl+时space,它将显示您拥有的组件列表。
我刚刚意识到这http://xmlns.jcp.org/jsf/composite是替换 的新 URL http://java.sun.com/jsf/composite,因此我在代码中更改了它并且它已经可以工作了。
| 归档时间: | 
 | 
| 查看次数: | 1844 次 | 
| 最近记录: |