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

Quarkus集成MyFaces时web.xml部分context-param被忽略问题求助

问题分析与解决方案

问题原因

  1. Quarkus配置优先级覆盖web.xml:Quarkus对JSF相关配置有专属加载优先级,标准JSF参数(如javax.faces.PROJECT_STAGE)会优先读取application.properties中的Quarkus专属配置项,web.xml里的对应设置会被忽略。
  2. MyFaces参数加载逻辑差异:MyFaces的部分参数(如org.apache.myfaces.USE_LAMBDA_METAFACTORY)由框架直接读取web.xml,但视图会话数量相关参数(NUMBER_OF_VIEWS_IN_SESSION、NUMBER_OF_SEQUENTIAL_VIEWS_IN_SESSION)被Quarkus JSF扩展的内部配置逻辑覆盖,导致web.xml设置无效。
  3. Quarkus默认值替换MyFaces原生配置:Quarkus对JSF视图会话数量有自身默认值(15和3),直接替换了MyFaces原生的20和4,且未同步读取web.xml中的自定义配置。

解决方案

  1. 使用Quarkus专属配置项替代web.xml参数
    在application.properties中添加对应配置,替代web.xml的<context-param>:
    • 配置JSF项目阶段:
      quarkus.jsf.project-stage=Development # 可替换为Production/Test等阶段
      
    • 配置视图会话数量:
      quarkus.jsf.number-of-views-in-session=20
      quarkus.jsf.number-of-sequential-views-in-session=4
      
  2. 验证配置生效
    可以通过以下方式确认配置是否正确加载:
    • 在页面中使用EL表达式:#{initParam['quarkus.jsf.number-of-views-in-session']}
    • 在CDI Bean中注入配置并读取:
      @Inject
      Config config;
      
      public void checkViewConfig() {
          int viewCount = config.getValue("quarkus.jsf.number-of-views-in-session", Integer.class);
          // 输出或验证该值是否符合预期
      }
      
  3. 确保版本兼容
    确认Quarkus与MyFaces版本适配,建议使用Quarkus官方文档推荐的MyFaces版本,避免因版本不匹配导致的配置读取异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:25:23