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

如何在JSP变量ph中访问JSTL属性difpos?解决类型转换异常

解决JSP访问JSTL属性时的类型转换异常问题

问题根源

使用<c:set var="difpos" value="10"/>定义属性时,JSTL会自动将数值字符串"10"装箱为Long类型,而非预期的Integer。直接强制转换为Integer就会触发ClassCastException。

解决方案

以下是三种可行的解决方式:

  • 方式一:先转为Long再转int
    先将获取到的对象强制转为Long,再通过自动拆箱或intValue()方法转为int:

    // 利用自动拆箱
    <% int ph = (Long) pageContext.getAttribute("difpos"); %>
    // 调用intValue()方法
    <% int ph = ((Long) pageContext.getAttribute("difpos")).intValue(); %>
    
  • 方式二:定义JSTL属性时指定类型
    在<c:set>标签中添加type属性,强制将值转为Integer类型:

    <c:set var="difpos" value="10" type="java.lang.Integer"/>
    

    之后即可正常强制转换为Integer:

    <% int ph = (Integer) pageContext.getAttribute("difpos"); %>
    
  • 方式三:通过EL表达式解析后转int
    利用EL表达式获取属性值,再用Integer.parseInt()转为int(注意处理值为空的场景):

    <% int ph = Integer.parseInt(pageContext.findAttribute("difpos").toString()); %>
    // 或者直接使用EL字符串
    <% int ph = Integer.parseInt("${difpos}"); %>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 19:50:26