gpt4 book ai didi

eclipse - Eclipse 自动完成快捷方式不显示使用复合组件的新标签的属性

转载 作者:行者123 更新时间:2023-12-02 17:39:11 26 4
gpt4 key购买 nike

我在 Eclipse 中使用 JSF 2.0 开发了复合组件。我已将 XHTML 标记文件放入 resources 文件夹中。

当我在键盘上按ctrl + 空格时,标签的属性不会显示。

我发现一些提示要安装“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 支持已集成在“Eclipse IDE for Enterprise Java Developers”中(请注意 Enterprise,因此不是“面向 Java 开发人员的 Eclipse IDE”) )。您需要确保在项目属性的Project Facets部分中启用JavaServer Faces构面,并将其设置为最低版本2.0。

enter image description here

这通常可以在新的动态 Web 项目向导中进行配置,但是在导入非 Eclipse 项目或创建非动态 Web 项目项目(例如 Maven 原型(prototype))时,那么你需要手动检查/添加它。

集成后,JSF 标记自动完成默认在 java.sun.com XML 命名空间上可用。

enter image description here

默认情况下无法识别新的 xmlns.jcp.org 命名空间(当前测试的 Eclipse 版本是 Luna SR2)。

enter image description here

新的 xmlns.jcp.org 命名空间仅在您添加了物理 JSF 2.2 实现来构建具有成熟的 Java EE 容器(其模块中包含 JSF 2.2)的路径时才起作用,通过一个不错的服务器插件集成并在项目属性中设置为目标运行时,或者在 Tomcat 和克隆的情况下在 /WEB-INF/lib 中设置具体的 JSF 2.2 实现 JAR 文件(或者将其添加为 Maven 依赖项)。

enter image description here

它只是仍然无法识别新 XML 命名空间中的组合。当更改回 java.sun.com 时,复合组件标记的代码完成又回来了,但这些标记上的属性的代码完成不可用。

enter image description here

然后我安装了JBoss Tools 4.2.3 for Eclipse Luna并在项目属性中启用了JBoss 工具知识库

enter image description here

关闭并重新打开 Facelet 后(这样 JBoss 内置 HTML 编辑器就会打开;您可以设置/配置通过右键单击使用的编辑器,打开方式),并切换到 em> 选项卡(请不要使用 Visual 编辑器,这是一场灾难),我终于得到了复合组件属性的代码完成。

enter image description here

只有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>

enter image description here

总结一下:

  • 在项目属性中启用 JSF 项目方面,以便完成复合标记上的代码。
  • 安装 JBoss 工具以完成复合标记中属性的代码。
  • 在项目属性中启用 JBoss 工具知识库。
  • 在构建路径中拥有物理 JSF 2.2 impl JAR,以支持标准标记上的 xmlns.jcp.org
  • 在复合标记上使用 java.sun.com XML 命名空间域或自定义标记库(或较新的 Eclipse 版本)。

关于eclipse - Eclipse 自动完成快捷方式不显示使用复合组件的新标签的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27505264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com