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

JSF页面无法显示CDI Bean属性值的问题求助

JSF页面无法显示CDI Bean变量值的解决方案

问题核心分析

你的代码中存在两个关键问题导致EL表达式无法正确解析Bean变量:

  1. Bean字段修饰符与Lombok注解不匹配
  2. 缺少JSF Servlet映射配置,容器未处理JSF页面

解决方案步骤

1. 修正CDI Bean的字段修饰符

Lombok的@Getter和@Setter注解仅会为私有字段生成标准的getter/setter方法。你的patika字段是public类型,Lombok不会为其生成getPatika()方法,而EL表达式#{cdiBean.patika}本质是调用getPatika()方法,而非直接访问字段。

修正后的JsfBean代码:

import jakarta.enterprise.context.RequestScoped;
import jakarta.inject.Named;
import lombok.Getter;
import lombok.Setter;

@Named(value = "cdiBean")
@RequestScoped
@Getter @Setter
public class JsfBean {
    private String patika; // 修改为private字段
    public JsfBean() {
        patika = "Spring Boot Eğitime Hoşgeldiniz";
        System.out.println(patika);
    }
}

2. 添加JSF Servlet映射配置

如果web.xml中未配置FacesServlet,容器不会将.xhtml页面交给JSF引擎处理,导致EL表达式无法被解析。需要在web.xml中添加以下配置:

<web-app 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-app_5_0.xsd"
         version="5.0">
    <welcome-file-list>
        <welcome-file>index.xhtml</welcome-file>
    </welcome-file-list>

    <!-- 新增JSF Servlet映射 -->
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>jakarta.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
</web-app>

3. 验证依赖完整性

确保项目引入了Jakarta EE Web Profile相关依赖(或单独引入CDI API、JSF API及对应实现)。例如Maven项目可添加:

<dependency>
    <groupId>jakarta.platform</groupId>
    <artifactId>jakarta.jakartaee-web-api</artifactId>
    <version>9.1.0</version>
    <scope>provided</scope>
</dependency>

如果使用Tomcat等轻量级容器,还需额外添加CDI实现(如Weld)和JSF实现(如Mojarra)的依赖,因为Tomcat本身不包含这些组件。


测试验证

重新部署项目后访问index.xhtml页面,即可正常显示Spring Boot Eğitime Hoşgeldiniz文本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:15:34