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

ModelAndView抛出NumberFormatException且无法加载JSP页面的原因

解决ModelAndView传递列表后出现的NumberFormatException问题

看起来你遇到的问题根源是JSP中对集合对象的访问方式错误,导致EL表达式把属性名housePrice当成了要转换的数值,从而触发NumberFormatException。

问题分析

错误日志里明确显示"For input string: 'housePrice'",说明代码试图把字符串housePrice转换成数字,但它本身是实体类的属性名,不是数值。大概率是你在Controller里把一个List集合(比如List<HousePrice>)放到了ModelAndView中,命名为housepricesList,但在JSP里直接用${housepricesList.housePrice}访问——List本身并没有housePrice这个属性,这种错误的访问方式导致容器把属性名当成了值来处理,最终触发转换异常。

解决方案

1. 确认Controller中的数据传递是否正确

确保你在Controller里存入Model的是一个合法的实体列表,实体类有housePrice属性和对应的getter方法(符合JavaBean规范):

// 示例Controller代码
@RequestMapping("/calculate")
public ModelAndView calculateHousePrices() {
    // 模拟计算得到的房价列表
    List<HousePrice> housePricesList = new ArrayList<>();
    housePricesList.add(new HousePrice(1000000.0));
    housePricesList.add(new HousePrice(1500000.0));
    
    ModelAndView mav = new ModelAndView("result.jsp");
    mav.addObject("housepricesList", housePricesList); // 存入列表
    return mav;
}

// 对应的实体类HousePrice
public class HousePrice {
    private Double housePrice;
    
    public HousePrice(Double housePrice) {
        this.housePrice = housePrice;
    }
    
    // 必须有getter方法,EL表达式依赖它获取属性值
    public Double getHousePrice() {
        return housePrice;
    }
}

2. 修正JSP中的访问逻辑

因为housepricesList是一个集合,你需要用<c:forEach>标签遍历它,逐个获取每个实体的housePrice属性:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!-- 遍历房价列表 -->
<c:forEach items="${housepricesList}" var="priceItem">
    <!-- 正确访问单个实体的housePrice属性 -->
    房价:<c:out value="${priceItem.housePrice}"/><br/>
</c:forEach>

如果你的需求是显示单个房价(不是列表),那要检查Controller里是否误把List当成单个对象存入Model,或者变量名写错了——比如应该存入mav.addObject("housePriceObj", singleHousePrice);,然后在JSP里用${housePriceObj.housePrice}访问。

额外注意点

如果你在JSP中使用了格式化标签(比如<fmt:formatNumber>),也要确保传入的是数值属性,而不是错误的集合访问表达式:

<!-- 正确用法 -->
<fmt:formatNumber value="${priceItem.housePrice}" pattern="#,##0.00"/>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:16:17