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

使用PrimeFaces的p:poll组件出现Long类型不支持异常该如何解决?

异常原因

p:poll 组件的 interval 属性仅支持 Integer 类型 入参,而 session.maxInactiveInterval 返回值为 java.lang.Long 类型,你在表达式中执行减法运算后返回值仍为 Long 类型,与组件要求的参数类型不匹配,因此触发类型不支持异常。

解决方案

你可以任选以下任意一种方案适配参数类型:

  • 方案1:直接在EL表达式中完成类型转换
    若你使用的EL版本支持as语法,可直接修改<p:poll>代码为:

    <p:poll interval="#{session.maxInactiveInterval - 10 as Integer}" async="true" />
    

    若不支持as语法,可调用Integer.valueOf方法转换:

    <p:poll interval="#{Integer.valueOf(session.maxInactiveInterval - 10)}" async="true" />
    

    部分高版本EL也支持直接强转int:

    <p:poll interval="#{(int)(session.maxInactiveInterval - 10)}" async="true" />
    
  • 方案2:后台Bean提前计算轮询间隔
    先在对应业务Bean中新增Integer类型的轮询间隔属性,提前完成类型转换:

    import javax.annotation.PostConstruct;
    import javax.faces.context.FacesContext;
    
    // 省略类的其他代码
    private Integer pollInterval;
    
    @PostConstruct
    public void init() {
        int sessionTimeout = FacesContext.getCurrentInstance().getExternalContext().getSessionMaxInactiveInterval();
        pollInterval = sessionTimeout - 10;
    }
    
    public Integer getPollInterval() {
        return pollInterval;
    }
    

    再修改前端<p:poll>代码引用该属性即可:

    <p:poll interval="#{xmlUploadBean.pollInterval}" async="true" />
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:21:02