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

