迁移到 Jakarta EE 后,Control+单击 Facelets 中的 EL 表达式在 Eclipse 中不起作用

问题描述 投票:0回答:1

我最近将项目从 javax 迁移到 Jakarta EE v10、jdk 11 到 17、Tomcat 10.1、primefaces v13

在早期的项目中,当我打开

.xhtml
文件,按下 Control 并单击任何 Java 类或方法时,它用于导航到该特定方法/文件。

迁移后,该功能已停止工作,

xhtml
Java 类/方法文件中的代码辅助也停止工作。

我的课程定义为:

import jakarta.inject.Named;
import org.springframework.web.context.annotation.SessionScope;

@Named(LoginWorkBean.NAME)
@SessionScope
public class LoginWorkBean {
      private static final long serialVersionUID = 2383439018xL;
      public static final String NAME = "loginWorkBean";
      public String userName; //and getters and setters
}

xhtml 文件:
在这里,早些时候,如果我按下 ctrl 并单击 loginWorkBean,它将带我到上面的课程。现在,迁移后,它已停止工作,它不会抛出任何错误/异常。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:o="http://omnifaces.org/ui" xmlns:p="http://primefaces.org/ui"
    xmlns:f="http://java.sun.com/jsf/core">
    <ui:composition>
        <h:outputText
                value="#{loginWorkBean.userName}"
                styleClass="bold" escape="false" />
    </ui:composition>
</html>

faces-config.xhtml:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="https://jakarta.ee/xml/ns/jakartaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
        https://jakarta.ee/xml/ns/jakartaee/web-facesconfig_4_0.xsd"
    version="4.0">
</faces-config>

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="https://jakarta.ee/xml/ns/jakartaee"
    xmlns:web="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="5.0">
     <context-param>
        <param-name>jakarta.faces.CONFIG_FILES</param-name>
        <param-value>/WEB-INF/faces-config.xml</param-value>
    </context-param>
    <context-param>
        <param-name>jakarta.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
        <param-name>jakarta.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.xhtml</param-value>
    </context-param>
    <context-param>
        <param-name>primefaces.THEME</param-name>
        <param-value>saga</param-value>
    </context-param>
    <context-param>
        <param-name>org.apache.myfaces.AUTOMATIC_EXTENSIONLESS_MAPPING</param-name>
        <param-value>true</param-value>
    </context-param>
</web-app>

以下是我的方法,但没有奏效:

  1. 添加了 JBoss 依赖项
  2. @SessionScope
    注释转换为
    @SessionScoped
    并添加
    @ManagedBean
  3. 在 Eclipse 中添加了依赖 Spring Tools Suite
  4. 为企业 Java 和 Web 开发人员下载最新的 Eclipse IDE
  5. Jakarta EE starter 下载新的 Jakarta 项目,并将其导入。
  6. 下载 MyEclipse 并导入我的项目。
  7. xhtml
    标签更改为以下:
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="jakarta.faces.core"
xmlns:jsf="jakarta.faces"
xmlns:h="jakarta.faces.html"
  1. 下载了 IntelliJ IDE 并导入了我的项目(自动完成功能运行了一段时间)

有效的方法:

  1. 在 NetBeans IDE 中,它按预期工作。我能够按住 Ctrl 键并单击 java 类/方法并导航到它们,代码辅助也有效。但我已经习惯了 Eclipse,我也想为我的 Jakarta 项目提供支持。
  2. 有时
    cmd+.
    适用于自动完成/代码建议,但它们不是确切的变量名称。

如果您需要更多信息,请告诉我。谢谢!

eclipse jsf jakarta-migration jboss-tools
1个回答
0
投票

您的问题解决了吗?我面临着同样的问题。 Jakarta 10、JSF 4.0 和 Java 21 在 NetBeans 和 IntelliJ 中按预期工作,但我还无法使其在 Eclipse 中工作。我希望 09/2024 Eclipse 更新能够解决这个问题,但不幸的是,它没有。我也尝试过使用 JBoss Web Tools 插件,但也不起作用。我的公司使用 Jakarta,由于每个人都习惯了 Eclipse,我更愿意继续使用它通过 Jakarta 10 进行 JSF 开发。

谢谢

© www.soinside.com 2019 - 2024. All rights reserved.