You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迁移至Jakarta EE后,Eclipse中Facelets的EL表达式Ctrl+Click功能失效

问题:Jakarta EE 10迁移后Eclipse中XHTML无法跳转Java类/代码提示失效

近期将项目从javax迁移至Jakarta EE v10、JDK从11升级到17,同时更换为Tomcat 10.1和PrimeFaces v13。此前在Eclipse中打开.xhtml文件时,按住Ctrl点击Java类或方法可跳转至对应文件/方法,迁移后该功能及.xhtml文件中Java类/方法的代码提示均失效。

相关代码

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.xml

<?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>

已尝试但无效的方法

  • 添加JBoss依赖
  • 将@SessionScope注解改为@SessionScoped并添加@ManagedBean
  • 在Eclipse中添加Spring Tools Suite依赖
  • 下载最新版Eclipse企业级Java与Web开发者IDE
  • 从Jakarta EE starter下载全新项目并导入
  • 下载MyEclipse并导入项目
  • 修改xhtml标签为:
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="jakarta.faces.core"
xmlns:jsf="jakarta.faces"
xmlns:h="jakarta.faces.html"
  • 下载IntelliJ IDE并导入项目(代码提示偶尔可用)

有效的方法

  • 在NetBeans IDE中功能正常,可Ctrl点击跳转及代码提示,但习惯使用Eclipse,希望解决该问题
  • 偶尔使用cmd+.可触发代码提示,但并非准确的变量名

如需更多信息请告知,谢谢!

内容的提问来源于stack exchange,提问作者Himanshu Joshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 08:32:34