You need to enable JavaScript to run this app. 通过href链接在JSP页面间传值时出现Object转String类型不匹配报错
优惠活动
大模型
产品
解决方案
定价
更多

通过href链接在JSP页面间传值时出现Object转String类型不匹配报错

报错核心原因

两个叠加问题触发了报错:

  1. 编译层面:request.getAttribute()方法的原生返回值为Object类型,Java不支持将Object类型隐式直接赋值给String类型变量,编译阶段就会触发类型不匹配的错误。
  2. 逻辑层面:你当前用href超链接传值的场景,本质是通过URL查询参数传值,这种场景下request.getAttribute()本身就取不到对应的值,和该方法的设计用途不匹配。
分步修复方案
  • 如果你的传值逻辑是通过request.setAttribute()把值存在请求域,再用服务器内部转发跳转到common.jsp
    只需要在拿到getAttribute返回值后添加强制类型转换,就能解决编译报错:
    原代码:String attr= request.getAttribute("param");
    修改为:String attr = (String) request.getAttribute("param");
    补充说明:null值强转为任意引用类型是合法的,不会触发空指针异常。
  • 如果你的传值逻辑是当前的href超链接跳转,在URL上拼接参数传值
    1. 先补全index.jsp里缺失的超链接代码,正确写法为:
      <p><a href="common.jsp?param=需要传递的具体内容">click</a></p>
    2. common.jsp中不要用getAttribute取值,改用专门读取URL查询参数的request.getParameter()方法——这个方法的返回值原生就是String类型,从根源上避免类型不匹配的报错,修改后代码为:
      String attr = request.getParameter("param"); out.print(attr);
  • 可选优化:取值后增加空值兜底,避免请求未携带参数时页面直接输出null文本,比如按如下逻辑调整:
    String attr = request.getParameter("param");
    out.print(attr == null ? "未接收到传入参数" : attr);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 11:24:04