我最近将项目从 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>
以下是我的方法,但没有奏效:
@SessionScope
注释转换为 @SessionScoped
并添加 @ManagedBean
xhtml
标签更改为以下:xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="jakarta.faces.core"
xmlns:jsf="jakarta.faces"
xmlns:h="jakarta.faces.html"
有效的方法:
cmd+.
适用于自动完成/代码建议,但它们不是确切的变量名称。如果您需要更多信息,请告诉我。谢谢!
您的问题解决了吗?我面临着同样的问题。 Jakarta 10、JSF 4.0 和 Java 21 在 NetBeans 和 IntelliJ 中按预期工作,但我还无法使其在 Eclipse 中工作。我希望 09/2024 Eclipse 更新能够解决这个问题,但不幸的是,它没有。我也尝试过使用 JBoss Web Tools 插件,但也不起作用。我的公司使用 Jakarta,由于每个人都习惯了 Eclipse,我更愿意继续使用它通过 Jakarta 10 进行 JSF 开发。
谢谢