如何在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
相关产品推荐
相关产品推荐

